Get-Projects
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.
Get-Events
Get event names for a Mixpanel project.
query: Exact substring filter (case-insensitive) against event names. Use a single word for best results
Edit-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.
Get-Event-Details
Get an event's full metadata. Use before editing to see current state.
Get-Property-Names
resource_type:- Event: event properties. Set 'event' for properties of that event only. Omit 'event' to get all. - User: user profile properties.- Omit for both
Get-Property-Values
For Event properties, the 'event' parameter is required.
Edit-Property
Set sensitive=True for PII data classification.
Get-Property
Get a property's full metadata. Use before editing to see current state.
Create-Tag
Create a tag for organizing events and properties in Lexicon.
Get-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.
Dismiss-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).
Rename-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.
Delete-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.
Get-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.
Get-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.
Get-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'.
Get-Report
Retrieve a saved report from a Mixpanel project. Optionally include the report results if it's a queryable report type.
Run-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"
}
}
}
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.
Create-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': {'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': {'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'}
List-Dashboards
Browse dashboards, then call Get-Dashboard for full metadata.
Use query to filter by title (case-insensitive substring match).
Get-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], ...]], ...].
Update-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 cell in a new row, use the row temp id in the cell definition.
- For updates and deletes, use real row and cell ids from Get-Dashboard.
rows: {id: 'string', action: 'add'} | {id: 'string', action: 'delete'}
Content: {type: 'text', html_content: 'string'} | {type: 'report', query_id: 'string', name: 'string', description: 'string'}
cells: {id: 'string', action: 'create', row_id: 'string', content: 'Content'} | {id: 'string', action: 'update', content: 'Content'} | {id: 'string', action: 'delete'}
Duplicate-Dashboard
Create a copy of an existing dashboard with all its contents.
Optionally override the title and description of the new dashboard.
Delete-Dashboard
Delete a dashboard. Always confirm with the user before proceeding.
Use List-Dashboards or Get-Dashboard to find the dashboard ID.