Query Mixpanel events, funnels, retention, segmentation and insights (JQL).
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Run a custom JQL (JavaScript Query Language) script for arbitrary analysis. Power-user escape hatch. Script must define main(). Query API: POST /jql. (Upstream maintenance mode; 2-min timeout, 5GB/query limit.)
JQL script defining function main(){ ... } that returns rows.
Optional JSON string exposed to the script as the `params` global.
Run a custom JQL (JavaScript Query Language) script for arbitrary analysis. Power-user escape hatch. Script must define main(). Query API: POST /jql. (Upstream maintenance mode; 2-min timeout, 5GB/query limit.)
| Argument | Type | Description |
|---|---|---|
| params | string | Optional JSON string exposed to the script as the `params` global. |
| script* | string | JQL script defining function main(){ ... } that returns rows. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"script"
],
"properties": {
"params": {
"type": "string",
"description": "Optional JSON string exposed to the script as the `params` global."
},
"script": {
"type": "string",
"description": "JQL script defining function main(){ ... } that returns rows."
}
}
}Get the funnel_id and name of every saved funnel in the project. Query API: GET /funnels/list.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Get conversion data for a saved funnel (use mixpanel_list_funnels to find funnel_id). Query API: GET /funnels.
| Argument | Type | Description |
|---|---|---|
| unit | string | Bucketing unit. |
| limit | integer | Limit on segmentation breakdown. |
| length | integer | Conversion window length. |
| to_date* | string | End date yyyy-mm-dd (inclusive). |
| interval | integer | Number of days per bucket. |
| from_date* | string | Start date yyyy-mm-dd (inclusive). |
| funnel_id* | integer | Saved funnel id (from mixpanel_list_funnels). |
| length_unit | string | Unit for `length`. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"funnel_id",
"from_date",
"to_date"
],
"properties": {
"unit": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"description": "Bucketing unit."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Limit on segmentation breakdown.",
"exclusiveMinimum": 0
},
"length": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Conversion window length.",
"exclusiveMinimum": 0
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"interval": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Number of days per bucket.",
"exclusiveMinimum": 0
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive)."
},
"funnel_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Saved funnel id (from mixpanel_list_funnels)."
},
"length_unit": {
"enum": [
"day",
"hour",
"minute",
"second",
"week",
"month"
],
"type": "string",
"description": "Unit for `length`."
}
}
}Fetch the computed data behind a saved Insights report by bookmark_id (the report id in the board URL). Mixpanel's recommended, non-deprecated path for programmatic reporting. Query API: GET /insights.
| Argument | Type | Description |
|---|---|---|
| bookmark_id* | integer | Insights report id (bookmark_id) from the report URL. |
| workspace_id | integer | Workspace id, if applicable. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"bookmark_id"
],
"properties": {
"bookmark_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Insights report id (bookmark_id) from the report URL."
},
"workspace_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Workspace id, if applicable."
}
}
}Cohort retention: of users who did `born_event`, how many came back and did `event` over subsequent intervals. Query API: GET /retention.
| Argument | Type | Description |
|---|---|---|
| unit | string | Interval unit. Default day. |
| event | string | Returning event to measure. If omitted, any event counts. |
| where | string | Filter expression applied to the returning event. |
| to_date* | string | End date yyyy-mm-dd (inclusive). |
| interval | integer | Units per bucket (<=90 if days). Default 1. |
| from_date* | string | Start date yyyy-mm-dd (inclusive). |
| born_event | string | The defining first event for a birth cohort. Required when retention_type=birth. |
| born_where | string | Filter expression applied to born_event. |
| interval_count | integer |
Count/segment/filter a single event over a date range. e.g. 'Signed up' by country last week. Params `on`/`where` use Mixpanel segmentation expressions like properties["$country_code"]. Query API: GET /segmentation. (Upstream maintenance mode — for saved reports prefer mixpanel_query_insights.)
| Argument | Type | Description |
|---|---|---|
| on | string | Property expression to segment on, e.g. properties["$city"]. |
| type | string | general | unique | average. Default general. |
| unit | string | Bucket size. Default day. |
| event* | string | Single event name to analyze (not an array). |
| limit | integer | Top N property values (only if `on` set). Default 60. |
| where | string | Filter expression, e.g. properties["$os"]=="iOS". |
| to_date* | string | End date yyyy-mm-dd (inclusive). |
| from_date* | string | Start date yyyy-mm-dd (inclusive). |
List today's top events with counts and % change vs yesterday. Good first call to discover what events a project tracks. Query API: GET /events/top.
| Argument | Type | Description |
|---|---|---|
| type | string | general (totals), unique (per-user), or average. Default general. |
| limit | integer | Max events to return. Default 100. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"general",
"unique",
"average"
],
"type": "string",
"description": "general (totals), unique (per-user), or average. Default general."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Max events to return. Default 100.",
"exclusiveMinimum": 0
}
}
}| Number of intervals to report. |
| retention_type | string | birth = first-time retention (default), compounded = recurring. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"from_date",
"to_date"
],
"properties": {
"unit": {
"enum": [
"day",
"week",
"month"
],
"type": "string",
"description": "Interval unit. Default day."
},
"event": {
"type": "string",
"description": "Returning event to measure. If omitted, any event counts."
},
"where": {
"type": "string",
"description": "Filter expression applied to the returning event."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"interval": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Units per bucket (<=90 if days). Default 1.",
"exclusiveMinimum": 0
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive)."
},
"born_event": {
"type": "string",
"description": "The defining first event for a birth cohort. Required when retention_type=birth."
},
"born_where": {
"type": "string",
"description": "Filter expression applied to born_event."
},
"interval_count": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Number of intervals to report.",
"exclusiveMinimum": 0
},
"retention_type": {
"enum": [
"birth",
"compounded"
],
"type": "string",
"description": "birth = first-time retention (default), compounded = recurring."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event",
"from_date",
"to_date"
],
"properties": {
"on": {
"type": "string",
"description": "Property expression to segment on, e.g. properties[\"$city\"]."
},
"type": {
"enum": [
"general",
"unique",
"average"
],
"type": "string",
"description": "general | unique | average. Default general."
},
"unit": {
"enum": [
"minute",
"hour",
"day",
"month"
],
"type": "string",
"description": "Bucket size. Default day."
},
"event": {
"type": "string",
"description": "Single event name to analyze (not an array)."
},
"limit": {
"type": "integer",
"maximum": 10000,
"description": "Top N property values (only if `on` set). Default 60.",
"exclusiveMinimum": 0
},
"where": {
"type": "string",
"description": "Filter expression, e.g. properties[\"$os\"]==\"iOS\"."
},
"to_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "End date yyyy-mm-dd (inclusive)."
},
"from_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Start date yyyy-mm-dd (inclusive)."
}
}
}