The Mixpanel MCP connector routes your AI agent's tool calls to Mixpanel's own MCP server through Scalekit. Each user signs in to Mixpanel once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 66 tools.
- Tools
- 66
- What they doRead · write · destructive
- 37 · 23 · 637 read23 write6 destructive
- Users sign in with
- OAuth
- OAuth app
- Your own Mixpanel MCP server app
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Mixpanel MCP connection
In AgentKit > Connections, create a Mixpanel MCP connection and copy its redirect URI. The name you give it is the
connection_nameyour code passes. See Configure connections.Register an OAuth app
Mixpanel MCP server connections use your own OAuth app. Register one with Mixpanel MCP server and add the redirect URI you copied.
Then enter the app's Client ID and Client Secret on the Mixpanel MCP connection.
Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'mixpanelmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Mixpanel MCP:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'mixpanelmcp_describe_cohort_schema',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "mixpanelmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Mixpanel MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="mixpanelmcp_describe_cohort_schema",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolmixpanelmcp_describe_cohort_schemaReturn the JSON schema for the `definition` field used by Create-Cohort and Update-Cohort.Read-onlyDescribe Cohort Schema
Return the JSON schema for the `definition` field used by Create-Cohort and Update-Cohort. Call this before writing a cohort definition for the first time in a session, so you know which fields are required for the grouped format versus the lower-level selector format. The response has three parts: - `definition`: the CohortDefinition JSON schema (the grouped/selector union). - `grouped_filter_types`: per-type schemas and worked examples for the entries inside the grouped format's `groups[].filters[]` array (property, behavioral, and cohort_membership filters), which the base schema leaves opaque. - `notes`: gotchas worth reading before authoring a definition.
Inputs
This tool takes no inputs.
mixpanelmcp_display_queryDisplay the interactive chart widget for a previously-run query.Read-onlyDisplay Query
Display the interactive chart widget for a previously-run query. Takes a query_id returned by Run-Query and render results in the MCP App visualization widget.
Inputs
project_idintegerrequired- The Mixpanel project the query was run against.
query_idstringrequired- The query_id returned by a previous Run-Query call.
workspace_idstring- Optional workspace the query was scoped to.
mixpanelmcp_explain_experiment_health_checkDiagnose why one of an experiment's automated health checks is failing (or confirm it is passing) and get a recommended next action.Read-onlyExplain Experiment Health Check
Diagnose why one of an experiment's automated health checks is failing (or confirm it is passing) and get a recommended next action. Covers two kinds of check, selected with health_check_kind. Sample Ratio Mismatch (health_check_kind="srm") detects when the observed traffic split deviates from the configured allocation. First call Get Experiment with compute_exposures set to true, then pass p_value from the experiment's live SRM analysis (pass it through as null if SRM has not been computed yet — the tool returns a clear "SRM unavailable" message instead of an error), live_exposures (the per-variant exposure counts), and target_allocations (the configured per-variant traffic split). Retrospective A/A bias check (health_check_kind="retro_a_a") runs per-metric statistical tests over the pre-experiment window to catch randomization or measurement bias. First call Get Experiment with compute_metrics set to true, then pass retro_aa_verdict (the live retro A/A block from that response, or null if it has not been computed yet, which is typical right after an experiment starts) and metric_names (a map of metric ID to display name, so the diagnosis can name the affected metrics instead of showing raw IDs). The response explains what is failing (or confirms nothing is), lists likely causes ordered from most to least probable, and recommends a next action — for example pausing the experiment, investigating exposure tracking, restarting with bot filtering, enabling CUPED, or simply continuing. It also cites the relevant statistical trustworthiness principle (Kohavi's for SRM, Twyman's Law for retro A/A) when a check is failing.
Inputs
health_check_kindstring- No description.one of
srmretro_a_adefaultsrm live_exposuresstring- No description.
metric_namesstring- No description.
p_valuestring- No description.
retro_aa_verdictstring- No description.
target_allocationsstring- No description.
mixpanelmcp_find_duplicate_groupsFind groups of duplicate or near-duplicate names in a Mixpanel project — both events and event properties.Read-onlyFind Duplicate Groups
Find groups of duplicate or near-duplicate names in a Mixpanel project — both events and event properties. Returns clusters a user might want to merge in Lexicon (e.g. 'Add to Cart', 'add_to_cart', 'addToCart'; or 'from_date', 'from-date'). Returns a FormattedTable with columns: - suggested_name: the most-popular variant in the cluster — use this as the merge target. - entity_names: every variant in the group, in popularity order (includes suggested_name as the first entry). - entity_type: 'events' or 'event_properties'. Pass this value back to Merge-Group / Dismiss-Duplicate-Group. Groups already merged or dismissed by the user are filtered out by the server. Empty `rows` means there is nothing actionable.
Inputs
project_idintegerrequired- The Mixpanel project to scan for duplicate or near-duplicate event and property names.
mixpanelmcp_get_business_contextCall this FIRST, before any other Mixpanel tool whenever ANY of these are true: 1.Read-onlyGet Business Context
Call this FIRST, before any other Mixpanel tool whenever ANY of these are true: 1. It is the first substantive turn of the conversation about this org or project. 2. The user references a name, acronym, product, team, project nickname, event, property, or concept whose org-specific meaning you cannot verify just from the tool list. Examples that should trigger this: "show me MCP data", "how is ingest doing?", "the onboarding funnel", "Project Atlas". 3. You are about to guess which project_id, event name, or property to use based on a name in the user's request. Example: User: "what project has sales data?" ❌ Wrong: jump to Get-Projects and pattern-match against project names. ✅ Right: call Get-Business-Context first, the org likely defines what "sales data" refers to (a product area, an internal acronym, a specific project). Once you have called this in the current conversation for a given organization (and project, if applicable), do NOT call it again. The result is stable for the session; reuse the previously returned context on every subsequent turn — including follow-ups, drill-downs, refinements, and new questions about the same project. Re-call ONLY if: - The user asks about a different project_id whose context you have not yet fetched this conversation. - The user explicitly asks you to refresh or reload business context. - You called Update-Business-Context this conversation and need the new content. What you get back: - Specialized instructions on how to query data in this org - How projects, events, and other entities are organized and named - Business vocabulary and definitions (acronyms, internal product names, etc.) Params: - project_id (int, optional): If provided, returns context for the project AND its organization. organization_id is not required in this case — the org is derived from the project. - organization_id (int, optional): Required when project_id is NOT provided. Call List-Organizations FIRST to obtain it. If List-Organizations returns exactly one org, use its id directly; if it returns more than one, ASK the user which org they mean before calling this tool.
Inputs
organization_idstring- Mixpanel organization ID. Required when project_id is not provided — call List-Organizations first to obtain it; if it returns exactly one org, use its id directly, otherwise ask the user which org they mean.
project_idstring- Mixpanel project ID. If provided, returns context for the project and its organization; organization_id is not required in this case.
mixpanelmcp_get_cohortRetrieve a single Mixpanel cohort by ID.Read-onlyGet Cohort
Retrieve a single Mixpanel cohort by ID. Returns the cohort's metadata (name, description, member count, visibility, creator, and last-updated time) along with its filter criteria in the structured CohortDefinition format. Mixpanel tracks only the last-updated time; there is no creation timestamp for cohorts. If the cohort's underlying definition contains filter shapes this tool does not yet model, the structured `definition` field is omitted (`null`), `unmodeled_clause_kinds` lists the unsupported shapes, and `definition_raw` returns the wire-format definition so you can still inspect the cohort's structure. `workspace_id` is required here, unlike List-Cohorts, which lists cohorts project-wide when `workspace_id` is omitted.
Inputs
cohort_idintegerrequired- No description.
project_idintegerrequired- No description.
workspace_idintegerrequired- No description.
mixpanelmcp_get_custom_propertyGet a custom property by id, including its full definition (behavior or display_formula + composed_properties).Read-onlyGet Custom Property
Get a custom property by id, including its full definition (behavior or display_formula + composed_properties). Use this before Update-Custom-Property to see the current definition. Custom property ids come from List-Properties (custom properties are named '$custom_property:<id>').
Inputs
custom_property_idintegerrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_get_dashboardSet include_layout=True to get full layout with cell/row IDs (needed for Update-Dashboard).Read-onlyGet Dashboard
Set include_layout=True to get full layout with cell/row IDs (needed for Update-Dashboard). Layout format: [[row_id, [[cell_id, type, extra], ...]], ...].
Inputs
dashboard_idintegerrequired- No description.
project_idintegerrequired- No description.
include_layoutboolean- No description.default
false
mixpanelmcp_get_eventsGet events for a Mixpanel project.Read-onlyGet Events
Get events for a Mixpanel project. Two lookup modes (mutually exclusive): - event_names: Look up specific events by exact name. Lightweight server-side filter. - query: Search/discover events by substring match (case-insensitive). Fetches all events. include_details: When True, return full event metadata (tags, description, display_name, verified, hidden, dropped) for each event. Set to false if no details are needed, to keep the response compact. tag: Filter to events that have this tag name. verified/hidden/dropped: Filter by metadata status (True or False).
Inputs
project_idintegerrequired- No description.
droppedstring- No description.
event_namesstring- No description.
hiddenstring- No description.
include_detailsboolean- No description.default
false querystring- No description.
tagstring- No description.
verifiedstring- No description.
workspace_idstring- No description.
mixpanelmcp_get_experimentGet the full configuration for an experiment, including metadata, variants, metrics (with IDs, type, and direction), cached results, and the experiment's URL in the Mixpanel UI.Read-onlyGet Experiment
Get the full configuration for an experiment, including metadata, variants, metrics (with IDs, type, and direction), cached results, and the experiment's URL in the Mixpanel UI. Metric IDs are included in the response; use the List Metrics tool to look up saved metrics by name. Set compute_exposures to true to refresh live exposure counts and Sample Ratio Mismatch (SRM) analysis. Set compute_metrics to true to refresh per-metric lift, confidence interval, p-value, and significance, plus the retrospective A/A health-check verdict. Both flags write the refreshed values back to the experiment's cache on the server and may trigger an automatic conclude transition, so treat them as an action rather than a passive read. Any non-fatal errors that occur while computing these values are returned alongside the results instead of failing the whole call. Either flag requires a workspace; when workspace_id is omitted, the project's default workspace is used automatically. To turn the returned fields into a ship or no-ship decision, use the Get Experiment Results Interpretation Guidance tool.
Inputs
experiment_idstringrequired- No description.
project_idintegerrequired- No description.
compute_exposuresboolean- No description.default
false compute_metricsboolean- No description.default
false workspace_idstring- No description.
mixpanelmcp_get_experiment_results_interpretation_guidanceReturns best-practice guidance for interpreting Mixpanel experiment results and deciding whether to ship, iterate, or kill an experiment.Read-onlyGet Experiment Results Interpretation Guidance
Returns best-practice guidance for interpreting Mixpanel experiment results and deciding whether to ship, iterate, or kill an experiment. Call this tool when analyzing or reasoning about experiment results — including reviewing a concluded experiment, interpreting p-values, lift, or Sample Ratio Mismatch (SRM), or deciding whether to ship a variant. Treat the response as the canonical results-interpretation reference; use it before calling Update Experiment with action="decide". Takes no input parameters. Equivalent to reading the guidance://experiments/results-interpretation MCP resource — offered as a tool for clients that don't read resources directly.
Inputs
This tool takes no inputs.
mixpanelmcp_get_experiment_setup_guidanceReturns best-practice guidance for designing a Mixpanel experiment before launch.Read-onlyGet Experiment Setup Guidance
Returns best-practice guidance for designing a Mixpanel experiment before launch. Call this tool when creating, configuring, or troubleshooting an experiment's setup — including writing a hypothesis, choosing metrics, sizing the sample, or picking a testing model. Treat the response as the canonical setup guidance; use it to propose or validate an experiment configuration before calling Create Experiment. Takes no input parameters. Equivalent to reading the guidance://experiments/setup MCP resource — offered as a tool for clients that don't read resources directly.
Inputs
This tool takes no inputs.
mixpanelmcp_get_feature_flagGet full configuration for a specific feature flag.Read-onlyGet Feature Flag
Get full configuration for a specific feature flag. Returns metadata, variants, rollout rules, experiment link, and UI URL. For listing flags, use mixpanelmcp_list_feature_flags.
Inputs
flag_idstringrequired- Unique identifier of the feature flag to retrieve.
project_idintegerrequired- Mixpanel project ID the flag belongs to.
workspace_idintegerrequired- Mixpanel workspace ID that scopes this request.
mixpanelmcp_get_feature_flag_lifecycle_guidanceReturns best-practice guidance for managing a Mixpanel feature flag after creation — staged rollout, kill-switch, hygiene/cleanup, archival, exposure tracking, and experiment linkage.Read-onlyGet Feature Flag Lifecycle Guidance
Returns best-practice guidance for managing a Mixpanel feature flag after creation — staged rollout, kill-switch, hygiene/cleanup, archival, exposure tracking, and experiment linkage. Call this when the user is rolling out, monitoring, killing, archiving, or cleaning up an existing feature flag, or asking about exposure tracking or flag-to-experiment links. The response is the canonical lifecycle guidance document; follow it when reasoning about post-creation flag operations. No input parameters. Equivalent to reading the `guidance://feature-flags/lifecycle` MCP resource — provided as a tool for clients that don't read resources directly.
Inputs
This tool takes no inputs.
mixpanelmcp_get_feature_flag_setup_guidanceReturns best-practice guidance for creating and configuring a Mixpanel feature flag.Read-onlyGet Feature Flag Setup Guidance
Returns best-practice guidance for creating and configuring a Mixpanel feature flag. Call this when the user is creating, configuring, or troubleshooting a feature-flag setup — including choosing the flag type (Feature Gate vs Dynamic Config vs Experiment-backed), naming the flag, defining variants, or deciding on initial rollout. The response is the canonical setup guidance document; follow it when proposing or validating feature-flag configuration. No input parameters. Equivalent to reading the `guidance://feature-flags/setup` MCP resource — provided as a tool for clients that don't read resources directly.
Inputs
This tool takes no inputs.
mixpanelmcp_get_issuesGet all data quality issues for a Mixpanel project.Read-onlyGet Issues
Get all data quality issues for a Mixpanel project. Returns rich context with human-readable descriptions, event/property names, timestamps, and variance details. Filter by event name, property name, issue type, status, date range, or search by description.
Inputs
project_idintegerrequired- No description.
event_namestring- No description.
issue_typestring- No description.
limitstring- No description.
offsetstring- No description.
property_namestring- No description.
querystring- No description.
since_datestring- No description.
statusstring- No description.
mixpanelmcp_get_lexicon_urlReturn a Mixpanel Lexicon transformations detail URL for an event or property.Read-onlyGet Lexicon URL
Return a Mixpanel Lexicon transformations detail URL for an event or property. Provide either event or property along with project_id. If workspace_id is omitted, the tool will choose the 'All project data' workspace. Use this when the user wants to change event/property metadata such as display name and description.
Inputs
project_idintegerrequired- The Mixpanel project that contains the event or property.
eventstring- The event name to look up in Lexicon.
propertystring- The property name to look up in Lexicon.
workspace_idstring- The workspace to scope the lookup to.default
0
mixpanelmcp_get_live_eventsRecent events streaming into a project, newest first, with event name, time, and distinct ID.Read-onlyGet Live Events
Recent events streaming into a project, newest first, with event name, time, and distinct ID. Use it to confirm newly instrumented events are arriving, or to debug what just happened for one user. Present the complete returned numbered Markdown table exactly as returned, with columns # | Event | Time | Distinct ID. Render it as a table, without a code fence. Include every row, preserving duplicates, row numbers, and newest-first order. Time is formatted as YYYY-MM-DD HH:MM:SS in the project's timezone, with daylight-saving time applied for each event. Do not group events, calculate counts, add a Count column, collapse events into "Other", truncate the listing, or replace it with a summary. Do not add commentary, comparisons with previous results, or inferred properties. Missing distinct IDs must remain marked as missing. This tool only returns these three fields; changing filters or the limit does not expose additional properties. For event definitions, tags, or verified status use Get-Events; for counts, trends, conversion, or paths use Run-Query. An event can exist in Get-Events without arriving, and can arrive before Get-Events knows it. An empty result means nothing has arrived yet, not a failure. Params: project_id (int), workspace_id (int), event_names (list of exact names to filter to), search (free text across properties, e.g. a distinct id or email), limit (default 15, max 100), paging_window (days back, default and max 30), from_date / to_date ("YYYY-MM-DD", default today in the project's timezone).
Inputs
project_idintegerrequired- No description.
workspace_idintegerrequired- No description.
event_namesstring- No description.
from_datestring- No description.
limitstring- No description.
paging_windowstring- No description.
searchstring- No description.
to_datestring- No description.
mixpanelmcp_get_lookup_tableRead a lookup table by id or name, or list all lookup tables.Read-onlyGet Lookup Table
Read a lookup table by id or name, or list all lookup tables. Provide `data_group_id` or `name` to get one table's schema (columns), row count, and a capped preview of its rows. Omit both to list every lookup table in the project (metadata only) — useful for discovering table names/ids. The `id` returned for each table is the `data_group_id` you pass back to this tool or to Update-Lookup-Table. The preview is capped by `preview_limit` (default 100) and may be smaller than `row_count` — it is a sample, not the full table. Use it to inspect the schema and existing values; to change rows, send only the rows you want to add/overwrite (`upsert_rows`) or remove (`delete_keys`) to Update-Lookup-Table, which applies the delta to the full table for you.
Inputs
project_idintegerrequired- No description.
data_group_idstring- No description.
namestring- No description.
preview_limitinteger- No description.default
100 workspace_idstring- No description.
mixpanelmcp_get_metricGet the full definition of a saved metric.Read-onlyGet Metric
Get the full definition of a saved metric. Returns the metric's complete structure: the events it counts (or references, for a formula), any mathematical expression combining multiple metrics, property filters, and the aggregation method (for example, unique users or total count). Use this to inspect an existing metric, copy its definition as a starting point for a new one, or verify its configuration before referencing it in an experiment.
Inputs
metric_idintegerrequired- No description.
project_idintegerrequired- No description.
mixpanelmcp_get_project_tokenA project's Mixpanel tracking token — the value an SDK is initialized with to send events to api.mixpanel.com/track.Read-onlyGet Project Token
A project's Mixpanel tracking token — the value an SDK is initialized with to send events to api.mixpanel.com/track. Use it when instrumenting tracking. This is NOT the API Secret or a service account, which are what reading data OUT of Mixpanel needs. Do not call this for those. Reading the token needs project owner or admin access, so a permission error means the user should ask an org admin rather than retrying. Treat the value as a credential: give it to the user, and keep it out of files, logs, and commits. Params: project_id (int).
Inputs
project_idintegerrequired- No description.
mixpanelmcp_get_projectsIf you have not yet called Get-Business-Context this conversation, call it FIRST — it may resolve project nicknames, acronyms, or org-specific terms in the user's request and tell you which project to pick without listing them.Read-onlyGet Projects
If you have not yet called Get-Business-Context this conversation, call it FIRST — it may resolve project nicknames, acronyms, or org-specific terms in the user's request and tell you which project to pick without listing them. Get projects that are accessible to current user. Returns the project's id, name, workspaces and context. Use this and prompt the user to select a project from the available projects.
Inputs
This tool takes no inputs.
mixpanelmcp_get_property_valuesGet values for one or more properties, returned as a table.Read-onlyGet Property Values
Get values for one or more properties, returned as a table. properties: one or more property names. With a single property the result is a one-column table of its distinct values. With multiple Event properties the result has one column per property so you can see which values co-occur on the same events. Prefer this over the deprecated single-string 'property' alias. property: DEPRECATED alias for a single-element 'properties'. Use 'properties' instead. Passing both 'property' and 'properties' with conflicting values is an error. result_mode (Event properties only): - 'grouped' (default): deduped combinations of the property values with a 'count' column, sorted by count descending. - 'expanded': one row per event occurrence, with a 'time' column, sorted by time. Use this to inspect raw, high-cardinality values (e.g. free-text) alongside their co-occurring properties. limit: maximum rows to return (default 100, max 1000). When results are truncated a trailing note row makes the cap explicit. from_date / to_date (YYYY-MM-DD): query window for the returned values. For the multi-property and expanded paths this defaults to the trailing ~30 days; for the single-property distinct-values path, omitting it falls back to the server's default trailing window. For Event properties, the 'event' parameter is required. User properties support only a single property in grouped mode.
Inputs
project_idintegerrequired- No description.
resource_typestringrequired- No description.one of
EventUser eventstring- No description.
from_datestring- No description.
limitinteger- No description.default
100 propertiesstring- No description.
propertystring- No description.
result_modestring- No description.one of
groupedexpandeddefaultgrouped to_datestring- No description.
workspace_idstring- No description.
mixpanelmcp_get_query_schemaGet the full instructions and JSON schema for building a full Mixpanel query.Read-onlyGet Query Schema
Get the full instructions and JSON schema for building a full Mixpanel query. Call this to learn all available fields and options for the 'report' parameter in Run-Query. report_type: 'insights', 'funnels', 'flows', or 'retention'.
Inputs
report_typestringrequired- The Mixpanel report type to fetch the query-building schema for.one of
insightsfunnelsflowsretention
mixpanelmcp_get_reportRetrieve a saved report's metadata from a Mixpanel project.Read-onlyGet Report
Retrieve a saved report's metadata from a Mixpanel project. Optionally include the report results if it's a queryable report type. Returns report metadata (id, name, type, creator info, timestamps) but NOT the query definition. To build a similar query, call Get-Query-Schema for the report type, then Run-Query.
Inputs
bookmark_idintegerrequired- The ID of the saved report (bookmark) to retrieve.
project_idintegerrequired- The Mixpanel project ID that contains the saved report.
skip_resultsboolean- Whether to skip executing the report and only return its metadata.default
true
mixpanelmcp_get_user_replays_dataGet session replays information.Read-onlyGet User Replays Data
Get session replays information. Provide either a distinct_id (with from_date and to_date) to find all replays for a user, OR a list of specific replay_ids (up to 20) to analyze directly. Optionally include event_properties (up to 5) to fetch specific property values for each event.
Inputs
project_idintegerrequired- The Mixpanel project to fetch session replays from.
distinct_idstring- The user's distinct_id to find replays for.
event_propertiesstring- Up to 5 event property names to include values for.
from_datestring- Start of the date range to search for replays.
replay_idsstring- Up to 20 specific replay IDs to analyze directly.
to_datestring- End of the date range to search for replays.
mixpanelmcp_list_cohortsList all cohorts in a Mixpanel project.Read-onlyList Cohorts
List all cohorts in a Mixpanel project. Returns a lightweight list of cohort headers: ID, name, description, and member count. Use the optional `query` parameter to filter cohorts by name (case-insensitive substring match). `workspace_id` is optional: omit it to list cohorts across the whole project, or pass one to scope results to a single workspace. The returned `count` is frequently empty (`null`). Mixpanel suppresses cached member counts in non-global workspaces, and in projects with sensitive or classified properties, for callers without sensitive-data access. Call Get-Cohort on a specific cohort ID for an authoritative count and the full cohort definition.
Inputs
project_idintegerrequired- No description.
querystring- No description.
workspace_idstring- No description.
mixpanelmcp_list_dashboardsPrefer Search-Entities with entity_types=['dashboard'] instead, it offers more flexibility and efficiency.Read-onlyList Dashboards
Prefer Search-Entities with entity_types=['dashboard'] instead, it offers more flexibility and efficiency. Returns a list of all the dashboards in the project. Use query to filter by title (case-insensitive substring match).
Inputs
project_idintegerrequired- No description.
querystring- No description.
workspace_idstring- No description.
mixpanelmcp_list_experimentsList and search experiments in a Mixpanel project.Read-onlyList Experiments
List and search experiments in a Mixpanel project. Filter by status, name (case-insensitive substring match), creator email, creation date, or tags. Use Get Experiment to fetch the full configuration for a specific experiment.
Inputs
project_idintegerrequired- No description.
created_afterstring- No description.
creator_emailstring- No description.
include_archivedboolean- No description.default
false namestring- No description.
statusstring- No description.
tagsstring- No description.
workspace_idstring- No description.
mixpanelmcp_list_feature_flagsList and search feature flags in a project.Read-onlyList Feature Flags
List and search feature flags in a project. Filter by status, key, name, creator, or creation date. Use mixpanelmcp_get_feature_flag for full configuration.
Inputs
project_idintegerrequired- Mixpanel project ID to list feature flags for.
workspace_idintegerrequired- Mixpanel workspace ID that scopes this request.
created_afterstring- Only return flags created after this timestamp.
creator_emailstring- Only return flags created by this user.
include_archivedboolean- Whether to include archived feature flags in the results.default
false keystring- Only return the flag with this exact key.
namestring- Only return flags whose display name matches this value.
statusstring- Only return flags with this status.
mixpanelmcp_list_metricsList all saved metrics in a Mixpanel project.Read-onlyList Metrics
List all saved metrics in a Mixpanel project. Returns each metric's ID, name, type, and description. Use this before creating an experiment to find an existing metric you can reuse instead of redefining it. Call Get-Metric on a specific metric ID for its full definition, and reference a metric by ID when configuring an experiment.
Inputs
project_idintegerrequired- No description.
querystring- No description.
workspace_idstring- No description.
mixpanelmcp_list_organizationsReturns the organizations the current user belongs to.Read-onlyList Organizations
Returns the organizations the current user belongs to.
Inputs
This tool takes no inputs.
mixpanelmcp_list_propertiesList properties for a Mixpanel project.Read-onlyList Properties
List properties for a Mixpanel project. Returns name and type by default. Two lookup modes (mutually exclusive): - names: Look up specific properties by exact name (max 100). - query: Search/discover properties by substring match (case-insensitive). resource_type: 'Event' for event properties, 'User' for user properties, or omit for both. events: Scope to one or more events' properties (only valid with resource_type='Event' or omitted). attributes: Extra attributes to include in the response. Valid values: description, display_name, hidden, dropped, sensitive, example_value, merged, tags, events. The 'events' attribute is only allowed when 'names' is provided — it requires a specific set of properties to look up event associations for. It is also expensive for large projects, so only request it when needed. tag: Filter to properties that have this tag name. hidden/dropped/sensitive: Filter by metadata status (True or False).
Inputs
project_idintegerrequired- No description.
attributesstring- No description.
droppedstring- No description.
eventsstring- No description.
hiddenstring- No description.
namesstring- No description.
querystring- No description.
resource_typestring- No description.
sensitivestring- No description.
tagstring- No description.
workspace_idstring- No description.
mixpanelmcp_run_experiment_pre_launch_checksChecks a draft experiment's configuration against nine known pre-launch pitfalls and returns a structured report of findings.Read-onlyRun Experiment Pre-Launch Checks
Checks a draft experiment's configuration against nine known pre-launch pitfalls and returns a structured report of findings. Call this before launching an experiment, once the primary metrics, baseline rate, minimum detectable effect (MDE), cohort size, and other configuration values have been chosen, to confirm the setup is sound. The checks it can report: - Pre-experiment bias likely: retrospective A/A checking is enabled and a continuous-type primary metric is configured, but CUPED variance reduction is off. - High variance without Winsorization: a continuous-type metric is configured but outlier capping (Winsorization) is off. - Multiple primaries without Bonferroni correction: two or more primary metrics are configured with no Bonferroni multiple-testing correction. - Underpowered, duration insufficient (blocker): expected exposures are less than half of the per-arm sample size the configured baseline rate and MDE require. - Underpowered, duration marginal: expected exposures are between half and a full per-arm required sample size. - Cohort too small (blocker): the configured cohort can't supply enough eligible users — per-arm target multiplied by the number of arms — for every arm to reach its target. Pass num_arms for experiments with more than two variants; it defaults to 2. - Missing guardrails: no guardrail metrics are configured. - Hypothesis/metric mismatch: the hypothesis text mentions an outcome (for example signup, conversion, retention, or revenue) that no configured primary metric name reflects. - Primary lacks a leading indicator: a retention-type primary metric is configured with no conversion- or funnel-type secondary metric to serve as an earlier read on the same outcome. Pass secondary_metric_types and secondary_metric_count so this check can run; without them it is skipped. Each finding carries a severity of blocker, warning, or fyi, and most carry a suggested fix (for example extending the duration, enabling CUPED, enabling Winsorization, enabling Bonferroni correction, adding a guardrail, resizing the cohort or sample, or reviewing metric alignment) that maps directly onto a follow-up Update Experiment call. This tool only reports findings — it does not block experiment creation itself. Blocker-severity findings should be surfaced prominently before the user confirms launch, but Create Experiment and Update Experiment enforce the actual gate. Findings are sorted with blockers first, then warnings, then informational notes. All inputs except target_sample_size are optional; any check whose required inputs are missing is silently skipped, so this tool can be called iteratively as configuration fields are filled in.
Inputs
target_sample_sizeintegerrequired- No description.
baseline_ratestring- No description.
bonferroni_enabledboolean- No description.default
false cohort_sizestring- No description.
cuped_enabledboolean- No description.default
false expected_exposuresstring- No description.
guardrail_metric_countinteger- No description.default
0 hypothesis_textstring- No description.
mdestring- No description.
num_armsinteger- No description.default
2 primary_metric_countinteger- No description.default
1 primary_metric_namesstring- No description.
primary_metric_typesstring- No description.
retro_aa_enabledboolean- No description.default
false secondary_metric_countinteger- No description.default
0 secondary_metric_namesstring- No description.
secondary_metric_typesstring- No description.
winsorization_enabledboolean- No description.default
false
mixpanelmcp_run_queryRun a single analytics query and return its results directly.Read-onlyRun Query
Run a single analytics query and return its results directly. Use this whenever the user requests a chart, a report, a metric, explore a behavior or root cause, or asks to "create a report". Returns results to chain queries iteratively. Only use skip_results=true when building a dashboard or you won't use the results. Report types: - insights: Basic report, supports different chart types, trends, and metric aggregations. - funnels: Conversion rates between sequential events within a time window. Requires at least 2 steps. - flows: Most frequent user paths to or from events. Shows steps before/after/between events as a sankey or paths chart. - retention: User engagement over time. Requires exactly 2 events: an initial action and a retention action. For very simple insights queries, use this schema as the `report` parameter: { "name": "string", "metrics": [ { "eventName": "string", "measurement": { "type": "basic", "math": "total | unique" } } ], "chartType": "table | line | bar", "unit": "hour | day | week | month", "dateRange": { "type": "relative", "range": { "unit": "day | week | month", "value": "integer" } } } Breakdowns split results by a property. Each breakdown's property fields must be nested under a `metric` object (do NOT place `type`/`propertyName` at the breakdown's top level). For example, to split "All Events" into individual events by the "Event Name" property: "breakdowns": [ {"metric": {"type": "property", "propertyName": "Event Name", "resource": "event"}} ] For more elaborated queries, with multiple events, filters, breakdowns, formulas or advanced measurements you must call Get-Query-Schema(report_type: 'insights'|'funnels'|'flows'|'retention') first to see the full schema for the `report` parameter. Keep responses compact: prefer short date ranges (7-30 days) or coarser granularity (week/month), and avoid combining many breakdowns with fine-grained time series.
Inputs
project_idintegerrequired- The Mixpanel project to run the query against.
reportobjectrequired- The query definition object for the chosen report type.
report_typestringrequired- The kind of analytics report to run.one of
insightsretentionfunnelsflows skip_resultsboolean- Whether to run the query without returning its results.default
false workspace_idstring- Optional workspace to scope the query to.
mixpanelmcp_search_entitiesSearch entities in a Mixpanel project: dashboards, reports, experiments, feature flags, metric trees, playlists, and heat maps.Read-onlySearch Entities
Search entities in a Mixpanel project: dashboards, reports, experiments, feature flags, metric trees, playlists, and heat maps. query: can be empty to browse by sort order. entity_types: set to include specific entity types. Values: insights, funnels, flows, retention, dashboard, launch-analysis, experiments, feature-flags, metric-trees, playlists, heat-maps. - Use Get-Report to fetch full details for insights, funnels, flows, and retention types. - Use Get-Dashboard to fetch full details for dashboards.
Inputs
project_idintegerrequired- The Mixpanel project to search within.
entity_typesstring- Limit results to these entity types.
limitinteger- Maximum number of entities to return.default
25 querystring- Search text to match against entity names.default
sort_bystring- How to order the search results.
mixpanelmcp_search_prior_experimentsSearch a project's past experiments for prior tests on the same feature, metric, or hypothesis, so you can check what was already learned before running a similar test again.Read-onlySearch Prior Experiments
Search a project's past experiments for prior tests on the same feature, metric, or hypothesis, so you can check what was already learned before running a similar test again. Pass whichever of metric_ids, flag_key, and hypothesis are already known for the experiment being planned — any single one is enough to get matches, and supplying more sharpens the ranking. Results combine three signals: overlap between the metric IDs, similarity between flag keys (exact, case-insensitive, substring, or shared-token match), and overlap between hypothesis wording. Each match includes its similarity reasons so you can see why a prior experiment was considered relevant. Pass exclude_experiment_id when ranking candidates against a draft experiment that's already saved in the store, so the draft doesn't match itself. Set include_archived to true to also search archived experiments.
Inputs
project_idintegerrequired- No description.
exclude_experiment_idstring- No description.
flag_keystring- No description.
hypothesisstring- No description.
include_archivedboolean- No description.default
false max_matchesinteger- No description.default
3 metric_idsstring- No description.
min_similaritynumber- No description.default
0.1
mixpanelmcp_bulk_edit_eventsEdit multiple events at once.WriteBulk Edit Events
Edit multiple events at once. Supports two modes: 1. Uniform fields (applied to ALL events): hidden, verified, dropped, tags, contact_emails, team_contact_names. 2. Per-event fields (on individual events in the events list): description, display_name. Both modes can be combined in a single call. Maximum 50 events per call.
Inputs
eventsarrayrequired- No description.
project_idintegerrequired- No description.
contact_emailsstring- No description.
droppedstring- No description.
hiddenstring- No description.
tagsstring- No description.
team_contact_namesstring- No description.
verifiedstring- No description.
mixpanelmcp_bulk_edit_propertiesEdit multiple properties at once.WriteBulk Edit Properties
Edit multiple properties at once. Supports two modes: 1. Uniform fields (applied to ALL properties): hidden, dropped, sensitive, tags. 2. Per-property fields (on individual entries in the properties list): description, display_name, example_value. Both modes can be combined in a single call. All properties must share the same resource_type ("Event" or "User"). Maximum 50 properties per call.
- Idempotent
Inputs
project_idintegerrequired- No description.
propertiesarrayrequired- No description.
resource_typestringrequired- No description.one of
EventUser droppedstring- No description.
hiddenstring- No description.
sensitivestring- No description.
tagsstring- No description.
mixpanelmcp_create_cohortCreate a new Mixpanel cohort — a saved, named group of users matching a set of criteria.WriteCreate Cohort
Create a new Mixpanel cohort — a saved, named group of users matching a set of criteria. Pass `definition` as an object matching the CohortDefinition schema, in either the grouped format (a `groups[]` filters grammar) or the lower-level selector format (`behaviors{}` plus a compound `selector` expression, used for cohorts that embed funnel or retention report behaviors). Call Describe-Cohort-Schema first to retrieve the full JSON schema and the required fields for each format. In the grouped format, each group's `event` identifies the anchor cohort that the filters narrow down. This is almost always `{"resourceType": "cohort", "value": "$all_users"}`. To anchor on members of an existing cohort instead, set `value` to that cohort's integer ID. `workspace_id` is required here, unlike List-Cohorts, which lists cohorts project-wide when `workspace_id` is omitted.
Inputs
definitionobjectrequired- No description.
namestringrequired- No description.
project_idintegerrequired- No description.
workspace_idintegerrequired- No description.
descriptionstring- No description.
is_visiblestring- No description.default
true
mixpanelmcp_create_custom_propertyCreate a formula-based custom property (a computed event or user property) in a project.WriteCreate Custom Property
Create a formula-based custom property (a computed event or user property) in a project. Define it with a `display_formula` expression that references named `composed_properties` variables (_A, _B, ...). Every property used in the formula must be mapped in `composed_properties` — use List-Properties to find the properties to compose. `resource_type` is 'events' or 'people'. The created property appears in Lexicon and is usable in reports.
Inputs
custom_propertystringrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_create_dashboardCreate a Mixpanel dashboard that combines multiple reports and text into a single view.WriteCreate Dashboard
Create a Mixpanel dashboard that combines multiple reports and text into a single view. Use when the user asks for a "dashboard," "board", or requests to save several reports grouped together. For a single report request, prefer Run-Query. Requires query_id(s) from prior Run-Query calls (use skip_results=true to chain multiple queries). Max 30 rows per dashboard. Each row can contain up to 4 items (text cards or reports). Row schema: {'$defs': {'ReportContent': {'additionalProperties': False, 'description': 'Report content for a dashboard row.', 'properties': {'type': {'const': 'report', 'default': 'report', 'title': 'Type', 'type': 'string'}, 'query_id': {'description': 'query_id from Run-Query', 'title': 'Query Id', 'type': 'string'}, 'name': {'maxLength': 255, 'title': 'Name', 'type': 'string'}, 'description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'title': 'Description'}}, 'required': ['query_id', 'name'], 'title': 'ReportContent', 'type': 'object'}, 'TextContent': {'additionalProperties': False, 'description': 'Text content for a dashboard cell.', 'properties': {'type': {'const': 'text', 'default': 'text', 'title': 'Type', 'type': 'string'}, 'html_content': {'description': 'HTML content for the text card. Allowed tags: a, blockquote, br, code, em, h1, h2, h3, hr, li, mark, ol, p, s, strong, u, ul. Other tags are stripped. Do not include newlines; Each html element means a new line.', 'maxLength': 2000, 'title': 'Html Content', 'type': 'string'}}, 'required': ['html_content'], 'title': 'TextContent', 'type': 'object'}}, 'description': 'A row to add to a dashboard.', 'properties': {'contents': {'items': {'discriminator': {'mapping': {'report': '#/$defs/ReportContent', 'text': '#/$defs/TextContent'}, 'propertyName': 'type'}, 'oneOf': [{'$ref': '#/$defs/TextContent'}, {'$ref': '#/$defs/ReportContent'}]}, 'maxItems': 4, 'minItems': 1, 'title': 'Contents', 'type': 'array'}}, 'required': ['contents'], 'title': 'DashboardRow', 'type': 'object'} Time filter schema: {'$defs': {'DateRange': {'description': 'Date range specification for dashboard time filter.', 'properties': {'type': {'description': 'Type of date range', 'enum': ['since', 'between', 'in the last'], 'title': 'Type', 'type': 'string'}, 'from': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "Start date (YYYY-MM-DD) for 'since' or 'between'", 'title': 'From'}, 'to': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'default': None, 'description': "End date (YYYY-MM-DD) for 'between'", 'title': 'To'}, 'window': {'anyOf': [{'$ref': '#/$defs/TimeWindow'}, {'type': 'null'}], 'default': None, 'description': "Time window for 'in the last'"}}, 'required': ['type'], 'title': 'DateRange', 'type': 'object'}, 'TimeWindow': {'description': 'Time window for relative date ranges.', 'properties': {'unit': {'description': 'Time unit', 'enum': ['day', 'week', 'month'], 'title': 'Unit', 'type': 'string'}, 'value': {'description': 'Number of units', 'minimum': 1, 'title': 'Value', 'type': 'integer'}}, 'required': ['unit', 'value'], 'title': 'TimeWindow', 'type': 'object'}}, 'description': 'Dashboard time filter.', 'properties': {'dateRange': {'$ref': '#/$defs/DateRange', 'description': 'Date range configuration'}, 'displayText': {'description': "Human-readable display text, e.g. 'Last 30 days'", 'title': 'Displaytext', 'type': 'string'}}, 'required': ['dateRange', 'displayText'], 'title': 'DashboardTimeFilter', 'type': 'object'}
Inputs
project_idintegerrequired- No description.
rowsarrayrequired- No description.
titlestringrequired- No description.
descriptionstring- No description.
is_privatestring- No description.default
false is_restrictedstring- No description.default
false time_filterstring- No description.
workspace_idstring- No description.
mixpanelmcp_create_experimentCreate a new experiment in DRAFT status in the specified project.WriteCreate Experiment
Create a new experiment in DRAFT status in the specified project. Before calling this tool for setup decisions — writing the hypothesis, choosing metrics, sizing the sample, picking a testing model or end condition, or configuring advanced features like CUPED, Winsorization, or multiple-testing correction — call the Get Experiment Setup Guidance tool first. It is the source of truth for what makes a sound experiment configuration. project_id and experiment.workspaceId are auto-injected from the caller's session; any value supplied for these is replaced before the request reaches the Mixpanel server, so there is no need to look them up first. Mechanics: - For a duration-based experiment, set experiment.settings.endCondition to "days" and set endAfterDays. For a sample-size-based experiment, set endCondition to "sample_size" and set sampleSize. - Reference existing saved metrics with primaryMetricIds, guardrailMetricIds, and secondaryMetricIds (look up IDs with the List Metrics tool), or define metrics inline in the metrics array using eventName and metricType. - Only include the variants array when specific variant keys, values, or traffic splits are required. When omitted, Mixpanel creates a default 50/50 control/treatment flag. - Every create runs the same seven deterministic pre-launch pitfall checks used by Run Experiment Pre-Launch Checks, deriving most inputs (arm count, sample size, metric counts, stats toggles) from the experiment configuration itself. Use the optional validationContext object to supply the few values the server can't derive on its own — baseline rate, minimum detectable effect (MDE), expected exposures, cohort size, and primary-metric measurement types. A blocker-severity finding (such as insufficient expected exposures or too small a cohort) stops the create and returns an actionable error; warning and informational findings are returned on the created experiment instead of blocking it. After creating the experiment, call Update Experiment with action set to "launch" to start it.
Inputs
experimentstringrequired- No description.
project_idintegerrequired- No description.
mixpanelmcp_create_feature_flag`project_id` and `workspace_id` are auto-injected from the caller's session — pass any int and the values you supply will be replaced before the call reaches the server.WriteCreate Feature Flag
`project_id` and `workspace_id` are auto-injected from the caller's session — pass any int and the values you supply will be replaced before the call reaches the server. Do not ask the user for them. For routing (Feature Gate vs Dynamic Config vs Experiment), input gathering, naming/keying conventions, and per-flagType variant rules, call `mixpanelmcp_get_feature_flag_setup_guidance` first. Mechanics: flag key is auto-derived from name when omitted; flag starts disabled (use mixpanelmcp_update_feature_flag to enable, or call mixpanelmcp_get_feature_flag_lifecycle_guidance for rollout decisions); rolloutPercentage defaults to 1.0 (100% of targeted traffic). Configure cohort targeting in the Mixpanel UI via the URL in the response.
Inputs
flagstringrequired- The feature flag definition: flag type, name, key, variants, rollout percentage, initial status, serving method, and context.
project_idintegerrequired- Mixpanel project ID to create the feature flag in.
workspace_idintegerrequired- Mixpanel workspace ID that scopes this request.
mixpanelmcp_create_lookup_tableCreate a lookup table from rows.WriteCreate Lookup Table
Create a lookup table from rows. Pass `rows` as a list of {column: value} objects; one column is the primary key (`primary_key_column`, default "Primary Key") used to join the table to event/user data. The table appears in Lexicon and can then be mapped to a property in the UI.
Inputs
lookup_tablestringrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_create_metricCreate a saved metric for reuse across experiments.WriteCreate Metric
Create a saved metric for reuse across experiments. A saved metric is either: - A `metric`: a single event behavior, such as a count, unique users, or DAU/WAU/MAU. - A `formula`: combines multiple existing metrics using a mathematical expression. Pass `definition` as an object with a `sections.events` array describing which events to count, the aggregation method (`math`), and any property filters. See the Definition field's schema for the full set of supported filter types and options. The response includes the new metric's ID, which you then pass to Create-Experiment in `primaryMetricIds`. For complex definitions, call Get-Metric on an existing metric first and use its definition as a template.
Inputs
definitionstringrequired- No description.
namestringrequired- No description.
project_idintegerrequired- No description.
typestringrequired- No description.one of
metricformula descriptionstring- No description.
workspace_idstring- No description.
mixpanelmcp_create_tagCreate a tag for organizing events and properties in Lexicon.WriteCreate Tag
Create a tag for organizing events and properties in Lexicon.
Inputs
namestringrequired- No description.
project_idintegerrequired- No description.
mixpanelmcp_dismiss_duplicate_groupDismiss a duplicate-group suggestion so it no longer appears in Find-Duplicate-Groups results.WriteDismiss Duplicate Group
Dismiss a duplicate-group suggestion so it no longer appears in Find-Duplicate-Groups results. Works for events and event properties. Does not modify any entity data — only hides the suggestion. There is no un-dismiss, so confirm with the user before calling. Pass the full entity_names list of the group exactly as returned by Find-Duplicate-Groups (order does not matter; the group is keyed by the set of names), plus the group's entity_type. entity_type must be 'events' or 'event_properties'.
- Idempotent
Inputs
entity_namesarrayrequired- The full list of names in the group, exactly as returned by Find-Duplicate-Groups. Order does not matter; the group is keyed by the set of names.
project_idintegerrequired- The Mixpanel project containing the duplicate-group suggestion to dismiss.
entity_typestring- Whether entity_names refers to 'events' or 'event_properties'.default
events
mixpanelmcp_duplicate_dashboardCreate a copy of an existing dashboard with all its contents.WriteDuplicate Dashboard
Create a copy of an existing dashboard with all its contents. Optionally override the title and description of the new dashboard.
Inputs
dashboard_idintegerrequired- No description.
project_idintegerrequired- No description.
descriptionstring- No description.
titlestring- No description.
mixpanelmcp_edit_eventUse contact_emails or team_contact_names for ownership.WriteEdit Event
Use contact_emails or team_contact_names for ownership. Set verified=True to verify/approve events, hidden=True to hide from UI, dropped=True to deprecate.
- Idempotent
Inputs
event_namestringrequired- No description.
project_idintegerrequired- No description.
contact_emailsstring- No description.
descriptionstring- No description.
display_namestring- No description.
droppedstring- No description.
hiddenstring- No description.
tagsstring- No description.
team_contact_namesstring- No description.
verifiedstring- No description.
mixpanelmcp_edit_propertySet sensitive=True for PII data classification.WriteEdit Property
Set sensitive=True for PII data classification. Set example_value to populate the example shown in Lexicon.
- Idempotent
Inputs
project_idintegerrequired- No description.
property_namestringrequired- No description.
resource_typestringrequired- No description.one of
EventUser descriptionstring- No description.
display_namestring- No description.
droppedstring- No description.
example_valuestring- No description.
hiddenstring- No description.
sensitivestring- No description.
mixpanelmcp_rename_tagRename an existing tag in a Mixpanel project.WriteRename Tag
Rename an existing tag in a Mixpanel project. The new name must be unique within the project (max 175 characters). This updates all events and properties currently using this tag.
- Idempotent
Inputs
new_tag_namestringrequired- No description.
project_idintegerrequired- No description.
tag_namestringrequired- No description.
mixpanelmcp_update_business_contextUpdate the business context at the project or organization level.WriteUpdate Business Context
Update the business context at the project or organization level. This is a full replace — the new content overwrites whatever exists; there is no merge or partial update. Other users may have authored the current context, so ALWAYS ask the user for explicit confirmation before calling this tool. Content should be minimal and focused: short, structured markdown notes that capture essential domain knowledge. Params: - context (str, required): The new context content. Pass an empty string to clear. - level (str, required): Either the literal string "project" or "organization". Must be passed explicitly so the level is never inferred. - project_id (int, required when level="project"): The project to update. - organization_id (int, required when level="organization"): The org to update. Call List-Organizations FIRST to obtain it. If List-Organizations returns exactly one org, use its id directly; if it returns more than one, ASK the user which org they mean before calling this tool.
- Idempotent
Inputs
contextstringrequired- The new context content to save, as structured markdown. Pass an empty string to clear the existing context.
levelstringrequired- Which level of context to update. Must be the literal string "project" or "organization" — no other values are accepted.one of
projectorganization organization_idstring- Required when level is "organization": the org whose context should be updated. Call List-Organizations first to obtain it.
project_idstring- Required when level is "project": the project whose context should be updated.
mixpanelmcp_update_cohortUpdate an existing Mixpanel cohort.WriteUpdate Cohort
Update an existing Mixpanel cohort. All fields (`name`, `description`, `definition`, `is_visible`) are optional; only the fields you provide are changed, and omitted fields keep their current value. `is_visible` toggles whether the cohort is hidden in the Mixpanel UI. The `is_visible` value returned in the response comes from a separate sharing/visibility serialization path and may not reflect the value you just set — do not rely on the response to confirm a hide or unhide. To change the cohort's filter criteria, pass a new `definition` object matching the CohortDefinition schema, the same format used by Create-Cohort. Call Describe-Cohort-Schema first if you don't already have that schema. `workspace_id` is required here, unlike List-Cohorts, which lists cohorts project-wide when `workspace_id` is omitted.
- Idempotent
Inputs
cohort_idintegerrequired- No description.
project_idintegerrequired- No description.
workspace_idintegerrequired- No description.
definitionstring- No description.
descriptionstring- No description.
is_visiblestring- No description.
namestring- No description.
mixpanelmcp_update_custom_propertyUpdate an existing formula-based custom property.WriteUpdate Custom Property
Update an existing formula-based custom property. Partial update: pass only the fields you want to change (`name`, `description`, `display_formula`, `composed_properties`); omitted fields keep their current value. When changing `display_formula` you must also pass the complete `composed_properties` mapping for it. `resource_type` is immutable. Use Get-Custom-Property first to see the current definition.
- Idempotent
Inputs
custom_propertystringrequired- No description.
custom_property_idintegerrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_update_dashboardCall Get-Dashboard with include_layout=True first to get cell/row IDs.WriteUpdate Dashboard
Call Get-Dashboard with include_layout=True first to get cell/row IDs. - To update a report cell query_id, call Run-Query first. - To add rows or cells, use any temporary string ID (e.g. "temp-row-1"). - To add a cell in a new row, use the row's temp ID in the cell definition. - For updates and deletes, use real row and cell IDs from Get-Dashboard. rows: ['<row_id>', 'add'] | ['<row_id>', 'delete'] Content: {type: 'text', html_content: 'string'} | {type: 'report', query_id: 'string', name: 'string', description: 'string'} cells: ['<cell_id>', 'create', 'text' | 'report', {row_id: 'string', ...Content}] | ['<cell_id>', 'update', 'text' | 'report', {...Content}] | ['<cell_id>', 'delete']
- Idempotent
Inputs
dashboard_idintegerrequired- No description.
project_idintegerrequired- No description.
cellsstring- No description.
descriptionstring- No description.
rowsstring- No description.
rows_orderstring- No description.
titlestring- No description.
mixpanelmcp_update_experimentUpdate an experiment's configuration, or drive it through its lifecycle, in a single call.WriteUpdate Experiment
Update an experiment's configuration, or drive it through its lifecycle, in a single call. Set experiment.action to run a lifecycle transition: - "launch" moves the experiment from DRAFT to ACTIVE and enables its linked feature flag. - "conclude" moves it from ACTIVE to CONCLUDED and disables its linked feature flag. - "decide" moves it from CONCLUDED to SUCCESS or FAIL and optionally ships the winning variant (see below). - "archive" soft-deletes the experiment; "restore" undoes an archive. For action="decide", the required fields depend on the experiment's settings.collectionMethod (call Get Experiment first if you don't already know it): - Feature-flag experiments: set shipMode to "ship_variant" with variant set to the winning key to ship it, "do_not_ship" to keep serving the control (this implies success=true), or "abandon" to disable the flag entirely (this implies success=false and variant="abandoned"). To record a decision without touching the flag, set success and variant directly and omit shipMode. - Exposure-events experiments: always omit shipMode. Set success=true with variant set to the winning key to ship it or to the control key to keep control, or set success=false with variant="abandoned" to record an abandoned test. Passing shipMode on an exposure-events experiment returns an UnsupportedCollectionMethod error. Set keepCohortTargeting to true alongside shipMode "ship_variant" or "do_not_ship" to preserve the experiment's existing cohort restrictions instead of rolling the chosen variant out to 100% of eligible traffic. Configuration fields — name, description, hypothesis, metrics, settings, and tags — can all be updated independently of any lifecycle action. Reference saved metrics with primaryMetricIds, guardrailMetricIds, and secondaryMetricIds (look up IDs with the List Metrics tool), or define metrics inline in the metrics array using eventName and metricType. Every field edit and every "launch" runs the same seven deterministic pre-launch pitfall checks used by Run Experiment Pre-Launch Checks, evaluated against the configuration that results after this patch is applied. Use the optional validationContext object to supply values the server can't derive on its own — baseline rate, minimum detectable effect (MDE), expected exposures, cohort size, and primary-metric measurement types. A blocker-severity finding stops the update and returns an actionable error; warning and informational findings are returned on the updated experiment instead of blocking it.
Inputs
experimentstringrequired- No description.
experiment_idstringrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_update_feature_flagUpdate flag configuration, status, or archive state.WriteUpdate Feature Flag
Update flag configuration, status, or archive state. For rollout / kill-switch / archival decisions — including the staged-rollout cadence, when to use status vs rolloutPercentage, and archive-vs-restore semantics — call `mixpanelmcp_get_feature_flag_lifecycle_guidance` first. All fields on `flag` are optional but at least one is required. To configure cohort targeting or advanced rollout rules, use the Mixpanel UI via the flag's URL (returned by mixpanelmcp_get_feature_flag).
- Idempotent
Inputs
flagstringrequired- Fields to update on the feature flag: name, description, ruleset (variants and/or rolloutPercentage), and/or status.
flag_idstringrequired- Unique identifier of the feature flag to update.
project_idintegerrequired- Mixpanel project ID the flag belongs to.
workspace_idintegerrequired- Mixpanel workspace ID that scopes this request.
mixpanelmcp_update_lookup_tableUpdate a lookup table with a row delta and/or edit name/description.WriteUpdate Lookup Table
Update a lookup table with a row delta and/or edit name/description. Send only the cells you want to change — you do NOT need to read or resend the whole table: - `upsert_rows`: a list of {column: value} objects to add or patch. When a row's `primary_key_column` matches an existing row, only the columns you send are updated and the row's other columns are kept; an unmatched key is added as a new row. Set a column to "" to blank it; to replace all of a row's columns, `delete_keys` it and upsert it in the same call. - `delete_keys`: a list of primary-key values whose rows to remove. Keys not in the table are ignored (reported back under `not_found`). The server reads the current table, applies the delta, and re-imports the full result, so a shrink is an explicit `delete_keys` rather than an omission. The response includes an `update_summary` ({added, updated, deleted, not_found}) so you can confirm what landed. Pass `name`/`description` to edit metadata. Provide at least one field.
- Idempotent
Inputs
data_group_idstringrequired- No description.
lookup_tablestringrequired- No description.
project_idintegerrequired- No description.
workspace_idstring- No description.
mixpanelmcp_update_metricUpdate a saved metric's name, definition, or description.WriteUpdate Metric
Update a saved metric's name, definition, or description. At least one of `name`, `definition`, or `description` is required. This changes the metric in place, which affects every experiment that already references it. If you need to preserve the original metric's behavior for existing experiments, create a new metric instead of updating this one. Call Get-Metric first to review the current definition before changing it.
- Idempotent
Inputs
metric_idintegerrequired- No description.
project_idintegerrequired- No description.
definitionstring- No description.
descriptionstring- No description.
namestring- No description.
mixpanelmcp_delete_cohortDelete a Mixpanel cohort.DestructiveDelete Cohort
Delete a Mixpanel cohort. This action is destructive and cannot be undone — always confirm with the user before deleting a cohort. Mixpanel blocks deletion if the cohort is still used in active reports or other dependencies, and returns an actionable error message in that case. Use List-Cohorts or Get-Cohort to find the cohort ID. `workspace_id` is required here, unlike List-Cohorts, which lists cohorts project-wide when `workspace_id` is omitted.
- Idempotent
Inputs
cohort_idintegerrequired- No description.
project_idintegerrequired- No description.
workspace_idintegerrequired- No description.
mixpanelmcp_delete_dashboardDelete a dashboard.DestructiveDelete Dashboard
Delete a dashboard. Always confirm with the user before proceeding. Use List-Dashboards or Get-Dashboard to find the dashboard ID.
- Idempotent
Inputs
dashboard_idintegerrequired- No description.
project_idintegerrequired- No description.
mixpanelmcp_delete_tagDelete a tag from a Mixpanel project.DestructiveDelete Tag
Delete a tag from a Mixpanel project. This removes the tag from all associated events and properties. Use with caution as this operation cannot be undone.
- Idempotent
Inputs
project_idintegerrequired- No description.
tag_namestringrequired- No description.
mixpanelmcp_dismiss_issuesDismiss data quality issues matching natural criteria - no need to look up IDs first.DestructiveDismiss Issues
Dismiss data quality issues matching natural criteria - no need to look up IDs first. Specify what to dismiss using event names, property names, dates, and issue types. Example: dismiss issues for the 'signup' event from November 15th, or dismiss all type drift issues for the 'user_id' property. IMPORTANT: If multiple issues match your criteria, you must set dismiss_all_matching=True as a safety measure. To dismiss a single issue, provide enough criteria to uniquely identify it (event + date, or property + date).
Inputs
project_idintegerrequired- No description.
datestring- No description.
dismiss_all_matchingboolean- No description.default
false event_namestring- No description.
issue_typestring- No description.
property_namestring- No description.
mixpanelmcp_fill_event_metadataUse AI to fill in missing event metadata for a Mixpanel project.DestructiveFill Event Metadata
Use AI to fill in missing event metadata for a Mixpanel project. For every event that is missing a display name and/or description, this generates one and applies it in bulk to the project's Lexicon. GAP-FILL ONLY: events that already have both a display name and a description are left untouched — this never overwrites existing metadata. DESTRUCTIVE: it writes metadata to the project's events. Always confirm with the user before calling. Returns the number of events whose metadata was filled in.
Inputs
project_idintegerrequired- No description.
mixpanelmcp_merge_groupMerge a group of duplicate names into one canonical entity in a Mixpanel project's Lexicon.DestructiveMerge Group
Merge a group of duplicate names into one canonical entity in a Mixpanel project's Lexicon. Works for events and event properties. DESTRUCTIVE: source entities are remapped to the canonical entity and their historical data is unified. Confirm with the user before calling. However, the merge can be undone in the Mixpanel UI with a single button click, so it's not a permanent action. Use with Find-Duplicate-Groups: pass its suggested_name as canonical_name, the remaining entity_names as source_names, and the group's entity_type as entity_type. canonical_name is filtered out of source_names automatically. entity_type must be 'events' or 'event_properties'. excluded: names from the suggested cluster the user does NOT want to merge. Pass them here (not in source_names) — they are left untouched but are still required to locate the suggestion, so include every name the cluster originally had across canonical + source + excluded. Server-side restrictions (rejected with an error): Mixpanel default entities, custom entities, dropped entities, entities already merged into another, and names that do not exist in the project.
Inputs
canonical_namestringrequired- The name to keep as the canonical entity, typically the suggested_name returned by Find-Duplicate-Groups.
project_idintegerrequired- The Mixpanel project that contains the entities to merge.
source_namesarrayrequired- The duplicate names to merge into canonical_name. Must contain at least one entry; canonical_name is filtered out automatically if included.
entity_typestring- Whether canonical_name and source_names refer to 'events' or 'event_properties'.default
events excludedstring- Names from the suggested cluster to leave untouched. Still required to locate the suggestion, so include every name the cluster originally had across canonical, source, and excluded.
No tools match.