Connects Claude directly to your PostHog instance for querying product analytics, managing feature flags, and running experiments without leaving your workflow. You get access to event data, user cohorts, insights, and flag configurations through natural language. Useful when you're debugging user behavior, checking experiment results, or toggling flags during development. Supports both PostHog Cloud and self-hosted instances. The streamable HTTP and SSE transports mean you can use it with any MCP-compatible client. Think of it as bringing your entire product analytics stack into your editor or chat interface, so you can ask questions about conversion funnels or feature adoption rates while you're writing code.
Public tool metadata for what this MCP can expose to an agent.
experiment-results-getGet comprehensive experiment results including all metrics data (primary and secondary) and exposure data. This tool fetches the experiment details and executes the necessary queries to get complete experiment results. Only works with new experiments (not legacy experiments).2 paramsGet comprehensive experiment results including all metrics data (primary and secondary) and exposure data. This tool fetches the experiment details and executes the necessary queries to get complete experiment results. Only works with new experiments (not legacy experiments).
idnumberrefreshbooleanexperiment-get-allDEPRECATED: renamed to experiment-list. This alias forwards to experiment-list and will be removed. Call experiment-list directly with the same arguments.8 paramsDEPRECATED: renamed to experiment-list. This alias forwards to experiment-list and will be removed. Call experiment-list directly with the same arguments.
limitnumberorderstringoffsetnumbersearchstringstatusstringall · complete · draft · paused · running · stoppedarchivedbooleancreated_by_idnumberfeature_flag_idnumberinsight-queryExecute a saved insight's query and return results. THIS IS THE ONLY WAY TO RETRIEVE INSIGHT RESULTS — the insights-list, insight-get, insight-create, and insight-update tools all return metadata and query definitions but never the actual data. Call insight-query whenever the...4 paramsExecute a saved insight's query and return results. THIS IS THE ONLY WAY TO RETRIEVE INSIGHT RESULTS — the insights-list, insight-get, insight-create, and insight-update tools all return metadata and query definitions but never the actual data. Call insight-query whenever the...
insightIdstringoutput_formatstringoptimized · jsondefault: optimizedfilters_overridevaluevariables_overridevaluequery-runYou should use this to answer questions that a user has about their data and for when you want to create a new insight. You can use 'event-definitions-list' to get events to use in the query, and 'event-properties-list' to get properties for those events. It can run a trend, f...1 paramsYou should use this to answer questions that a user has about their data and for when you want to create a new insight. You can use 'event-definitions-list' to get events to use in the query, and 'event-properties-list' to get properties for those events. It can run a trend, f...
queryvaluequery-validateDry-run a HogQL query: parse and type-check it without executing, so there is no ClickHouse cost and no 202 polling. Returns structured errors (with character positions), warnings, notices, and the list of tables the query references. Use this before 'query-run' on any non-tri...3 paramsDry-run a HogQL query: parse and type-check it without executing, so there is no ClickHouse cost and no 202 polling. Returns structured errors (with character positions), warnings, notices, and the list of tables the query references. Use this before 'query-run' on any non-tri...
querystringlanguagestringhogQL · hogQLExpr · hog · hogTemplatedefault: hogQLconnectionIdstringhogql-schemaReturn the HogQL catalog for the active project: every queryable table (PostHog, system, warehouse, view, materialized view, batch export, endpoint) keyed by name, with each table's fields, plus the join graph between data-warehouse tables. Call this once up front when buildin...1 paramsReturn the HogQL catalog for the active project: every queryable table (PostHog, system, warehouse, view, materialized view, batch export, endpoint) keyed by name, with each table's fields, plus the join graph between data-warehouse tables. Call this once up front when buildin...
connectionIdstringquery-generate-hogql-from-questionThis is a slow tool, and you should only use it once you have tried to create a query using the 'query-run' tool, or the query is too complicated to create a trend / funnel. Queries project's PostHog data based on a provided natural language question - don't provide SQL query...1 paramsThis is a slow tool, and you should only use it once you have tried to create a query using the 'query-run' tool, or the query is too complicated to create a trend / funnel. Queries project's PostHog data based on a provided natural language question - don't provide SQL query...
questionstringget-llm-total-costs-for-projectFetches the total LLM daily costs for each model for a project over a given number of days. If no number of days is provided, it defaults to 7. The results are sorted by model name. The total cost is rounded to 4 decimal places. The query is executed against the project's data...2 paramsFetches the total LLM daily costs for each model for a project over a given number of days. If no number of days is provided, it defaults to 7. The results are sorted by model name. The total cost is rounded to 4 decimal places. The query is executed against the project's data...
daysnumberprojectIdintegerswitch-organizationChange the active organization from the default organization. You should only use this tool if the user asks you to change the organization - otherwise, the default organization will be used.1 paramsChange the active organization from the default organization. You should only use this tool if the user asks you to change the organization - otherwise, the default organization will be used.
orgIdstringprojects-getFetches projects that the user has access to in the current organization.Fetches projects that the user has access to in the current organization.
No parameter schema in public metadata yet.
event-definitions-listList all event definitions in the project with optional filtering. Can filter by search term.3 paramsList all event definitions in the project with optional filtering. Can filter by search term.
qstringlimitintegeroffsetintegerevent-definition-updateUpdate event definition metadata. Can update description, tags, mark status as verified or hidden. Use exact event name like '$pageview' or 'user_signed_up'.2 paramsUpdate event definition metadata. Can update description, tags, mark status as verified or hidden. Use exact event name like '$pageview' or 'user_signed_up'.
dataobjecteventNamestringproperties-listList properties for events or persons. If fetching event properties, you must provide an event name.5 paramsList properties for events or persons. If fetching event properties, you must provide an event name.
typestringevent · personlimitintegeroffsetintegereventNamestringincludePredefinedPropertiesbooleanswitch-projectChange the active project from the default project. You should only use this tool if the user asks you to change the project - otherwise, the default project will be used.1 paramsChange the active project from the default project. You should only use this tool if the user asks you to change the project - otherwise, the default project will be used.
projectIdintegersurvey-createCreates a new survey in the project. Use this for both in-app surveys and hosted forms. Prefer draft creation by default and do not set start_date unless the user explicitly asks to launch immediately. For in-app surveys, popover is the default unless the user asks for widget...17 paramsCreates a new survey in the project. Use this for both in-app surveys and hosted forms. Prefer draft creation by default and do not set start_date unless the user explicitly asks to launch immediately. For in-app surveys, popover is the default unless the user asks for widget...
namestringtypestringpopover · widget · external_survey · apischedulevaluequestionsvalueappearancevalueconditionsvaluestart_datevaluedescriptionstringform_contentvaluetranslationsvaluelinked_flag_idvalueiteration_countvalueresponses_limitvaluetargeting_flag_filtersvalueenable_iframe_embeddingvalueenable_partial_responsesvalueiteration_frequency_daysvaluesurvey-getGet a specific survey by ID. Returns the survey configuration including questions, targeting, and scheduling details.1 paramsGet a specific survey by ID. Returns the survey configuration including questions, targeting, and scheduling details.
idstringsurveys-get-allGet all surveys in the project with optional filtering. Can filter by search term or use pagination.4 paramsGet all surveys in the project with optional filtering. Can filter by search term or use pagination.
limitnumberoffsetnumbersearchstringarchivedbooleansurvey-updateUpdate an existing survey by ID. Omitted top-level fields are preserved, but nested objects and arrays you provide may replace existing values. Before changing questions, conditions, appearance, targeting, translations, or hosted-form content, retrieve the survey first and pre...22 paramsUpdate an existing survey by ID. Omitted top-level fields are preserved, but nested objects and arrays you provide may replace existing values. Before changing questions, conditions, appearance, targeting, translations, or hosted-form content, retrieve the survey first and pre...
idstringnamestringtypestringpopover · widget · external_survey · apiarchivedbooleanend_datevalueschedulevaluequestionsvalueappearancevalueconditionsvaluestart_datevaluedescriptionstringform_contentvaluetranslationsvaluelinked_flag_idvalueiteration_countvalueresponses_limitvaluetargeting_flag_idnumberremove_targeting_flagvaluetargeting_flag_filtersvalueenable_iframe_embeddingvalueenable_partial_responsesvalueiteration_frequency_daysvaluesurvey-deleteDelete a survey by ID (soft delete - marks as archived).1 paramsDelete a survey by ID (soft delete - marks as archived).
idstringsurveys-global-statsGet aggregated response statistics across all surveys in the project. Includes event counts (shown, dismissed, sent), unique respondents, conversion rates, and timing data. Supports optional date filtering.2 paramsGet aggregated response statistics across all surveys in the project. Includes event counts (shown, dismissed, sent), unique respondents, conversion rates, and timing data. Supports optional date filtering.
date_tostringdate_fromstringsurvey-statsGet response statistics for a specific survey. Includes detailed event counts (shown, dismissed, sent), unique respondents, conversion rates, and timing data. Supports optional date filtering.3 paramsGet response statistics for a specific survey. Includes detailed event counts (shown, dismissed, sent), unique respondents, conversion rates, and timing data. Supports optional date filtering.
idstringdate_tostringdate_fromstringentity-searchSearch for PostHog entities by name or description. Can search across multiple entity types including insights, dashboards, experiments, feature flags, notebooks, actions, cohorts, event definitions, and surveys. Use this to find entities when you know part of their name. Retu...2 paramsSearch for PostHog entities by name or description. Can search across multiple entity types including insights, dashboards, experiments, feature flags, notebooks, actions, cohorts, event definitions, and surveys. Use this to find entities when you know part of their name. Retu...
querystringentitiesarraydebug-mcp-ui-appsDebug tool for testing MCP Apps SDK integration. Returns sample data displayed in an interactive UI app with component showcase. Use this to verify that MCP Apps are working correctly.1 paramsDebug tool for testing MCP Apps SDK integration. Returns sample data displayed in an interactive UI app with component showcase. Use this to verify that MCP Apps are working correctly.
messagestringexternal-data-sources-db-schemaValidate credentials against a remote source and return the list of tables available to sync (works for database sources like Postgres/MySQL and SaaS sources like Stripe/Hubspot alike). Pass source_type and credential fields in the payload object. Each table entry includes: ta...2 paramsValidate credentials against a remote source and return the list of tables available to sync (works for database sources like Postgres/MySQL and SaaS sources like Stripe/Hubspot alike). Pass source_type and credential fields in the payload object. Each table entry includes: ta...
payloadobjectsource_typestringexternal-data-sources-jobsList sync job history for a data warehouse source. Returns jobs sorted by most recent first, with status, duration, rows synced, and errors. Supports optional filtering by date range (after/before as ISO timestamps) and by schema name.4 paramsList sync job history for a data warehouse source. Returns jobs sorted by most recent first, with status, duration, rows synced, and errors. Supports optional filtering by date range (after/before as ISO timestamps) and by schema name.
idstringafterstringbeforestringschemasarrayexternal-data-sync-logsGet sync job logs for a data warehouse table schema. Returns log entries from the log_entries ClickHouse table, filtered by schema ID and optionally by a specific job's workflow_run_id. Use external-data-sources-jobs to find job IDs and workflow_run_ids. Supports filtering by...5 paramsGet sync job logs for a data warehouse table schema. Returns log entries from the log_entries ClickHouse table, filtered by schema ID and optionally by a specific job's workflow_run_id. Use external-data-sources-jobs to find job IDs and workflow_run_ids. Supports filtering by...
levelstringDEBUG · INFO · WARNING · ERRORlimitintegerjob_idstringsearchstringschema_idstringsession-recording-summarizeGenerate an AI-powered summary of one or more session recordings. Returns structured analysis including user journey segments, key actions, segment outcomes, overall session outcome, and sentiment analysis (frustration score, rage clicks, confusion signals). Use this instead o...2 paramsGenerate an AI-powered summary of one or more session recordings. Returns structured analysis including user journey segments, key actions, segment outcomes, overall session outcome, and sentiment analysis (frustration score, rage clicks, confusion signals). Use this instead o...
focus_areastringsession_idsarrayaction-createCreate a new action in the project. Actions define reusable event triggers based on page views, clicks, form submissions, or custom events. Each action can have multiple steps (OR conditions). Use actions to create composite events for insights and funnels. Example: Create a '...7 paramsCreate a new action in the project. Actions define reusable event triggers based on page views, clicks, form submissions, or custom events. Each action can have multiple steps (OR conditions). Use actions to create composite events for insights and funnels. Example: Create a '...
namevaluetagsarraystepsarraypinned_atvaluedescriptionstringpost_to_slackbooleanslack_message_formatstringaction-deleteDelete an action by ID (soft delete - marks as deleted). The action will no longer appear in lists but historical data is preserved.1 paramsDelete an action by ID (soft delete - marks as deleted). The action will no longer appear in lists but historical data is preserved.
idnumberaction-getGet a specific action by ID. Returns the action configuration including all steps and their trigger conditions.1 paramsGet a specific action by ID. Returns the action configuration including all steps and their trigger conditions.
idnumberaction-updateUpdate an existing action by ID. Can update name, description, steps, tags, and Slack notification settings.8 paramsUpdate an existing action by ID. Can update name, description, steps, tags, and Slack notification settings.
idnumbernamevaluetagsarraystepsarraypinned_atvaluedescriptionstringpost_to_slackbooleanslack_message_formatstringactions-get-allGet all actions in the project. Actions are reusable event definitions that can combine multiple trigger conditions (page views, clicks, form submissions) into a single trackable event for use in insights and funnels. Supports pagination with limit and offset parameters. Note:...2 paramsGet all actions in the project. Actions are reusable event definitions that can combine multiple trigger conditions (page views, clicks, form submissions) into a single trackable event for use in insights and funnels. Supports pagination with limit and offset parameters. Note:...
limitnumberoffsetnumberactivity-log-listList recent activity log entries for the project. Shows who did what and when — feature flag changes, dashboard edits, experiment launches, etc. Supports filtering by scope, user, and date range.6 paramsList recent activity log entries for the project. Shows who did what and when — feature flag changes, dashboard edits, experiment launches, etc. Supports filtering by scope, user, and date range.
pagenumberuserstringscopestringCohort · FeatureFlag · Person · Group · Insight · Pluginscopesarrayitem_idstringpage_sizenumberadvanced-activity-logs-filtersGet the available filter options for activity logs — scopes, activity types, and users that have logged activity. Useful for building filter UIs or understanding what kinds of activity are tracked.Get the available filter options for activity logs — scopes, activity types, and users that have logged activity. Useful for building filter UIs or understanding what kinds of activity are tracked.
No parameter schema in public metadata yet.
advanced-activity-logs-listList activity log entries with advanced filtering, sorting, and field-level diffs. Supports filtering by scope, activity type, user, date range, and search text.15 paramsList activity log entries with advanced filtering, sorting, and field-level diffs. Supports filtering by scope, activity type, user, date range, and search text.
pagenumberusersarrayscopesarrayclientsarrayend_datestringitem_idsarrayteam_idsarrayis_systemvaluepage_sizenumberactivitiesarraystart_datestringsearch_textstringhogql_filterstringdetail_filtersstringwas_impersonatedvaluealert-createCreate a new alert on an insight. Alerts can use either threshold-based conditions or anomaly detection. For threshold alerts: set condition (absolute_value, relative_increase, relative_decrease) and threshold configuration with bounds. For anomaly detection: set detector_conf...15 paramsCreate a new alert on an insight. Alerts can use either threshold-based conditions or anomaly detection. For threshold alerts: set condition (absolute_value, relative_increase, relative_decrease) and threshold configuration with bounds. For anomaly detection: set detector_conf...
namestringconfigvalueenabledbooleaninsightnumberconditionvaluethresholdobjectskip_weekendvaluesnoozed_untilvaluedetector_configvaluesubscribed_usersarraycalculation_intervalstringhourly · daily · weekly · monthlyschedule_restrictionvalueinvestigation_agent_enabledbooleaninvestigation_gates_notificationsbooleaninvestigation_inconclusive_actionstringnotify · suppressalert-deleteDelete an alert by ID. This permanently removes the alert and all its check history. Subscribed users will no longer receive notifications.1 paramsDelete an alert by ID. This permanently removes the alert and all its check history. Subscribed users will no longer receive notifications.
idstringalert-getGet a specific alert by ID. Returns the full alert configuration including check results, threshold settings, detector_config (for anomaly detection alerts), and subscribed users. Check results include anomaly_scores, triggered_points, and triggered_dates for detector-based al...5 paramsGet a specific alert by ID. Returns the full alert configuration including check results, threshold settings, detector_config (for anomaly detection alerts), and subscribed users. Check results include anomaly_scores, triggered_points, and triggered_dates for detector-based al...
idstringchecks_limitnumberchecks_offsetnumberchecks_date_tostringchecks_date_fromstringalert-simulateRun an anomaly detector on an insight's historical data without creating any alert or check records. Use this to preview how a detector configuration would perform before saving it as an alert. Requires an insight ID and a detector_config object with a type (zscore, mad, iqr,...4 paramsRun an anomaly detector on an insight's historical data without creating any alert or check records. Use this to preview how a detector configuration would perform before saving it as an alert. Requires an insight ID and a detector_config object with a type (zscore, mad, iqr,...
insightnumberdate_fromvalueseries_indexnumberdetector_configvaluealert-updateUpdate an existing alert by ID. Can update name, threshold, condition, config, detector_config, subscribed users, enabled state, calculation interval, and weekend skipping. Set detector_config to switch to anomaly detection, or set it to null to switch back to threshold mode....16 paramsUpdate an existing alert by ID. Can update name, threshold, condition, config, detector_config, subscribed users, enabled state, calculation interval, and weekend skipping. Set detector_config to switch to anomaly detection, or set it to null to switch back to threshold mode....
idstringnamestringconfigvalueenabledbooleaninsightnumberconditionvaluethresholdobjectskip_weekendvaluesnoozed_untilvaluedetector_configvaluesubscribed_usersarraycalculation_intervalstringhourly · daily · weekly · monthlyschedule_restrictionvalueinvestigation_agent_enabledbooleaninvestigation_gates_notificationsbooleaninvestigation_inconclusive_actionstringnotify · suppressalerts-listList all insight alerts in the project. Returns alerts with their current state, threshold or detector configuration, timing information, and firing check history. Supports filtering by insight ID via query parameter. Alerts can use either threshold-based conditions (absolute_...2 paramsList all insight alerts in the project. Returns alerts with their current state, threshold or detector configuration, timing information, and firing check history. Supports filtering by insight ID via query parameter. Alerts can use either threshold-based conditions (absolute_...
limitnumberoffsetnumberannotation-createCreate an annotation to mark an important change (for example, a deployment) on charts and trends. Provide a note in `content`, when it happened in `date_marker` (ISO 8601), and whether it is scoped to the current `project` or the whole `organization`.3 paramsCreate an annotation to mark an important change (for example, a deployment) on charts and trends. Provide a note in `content`, when it happened in `date_marker` (ISO 8601), and whether it is scoped to the current `project` or the whole `organization`.
scopestringdashboard_item · dashboard · project · organization · recordingcontentvaluedate_markervalueannotation-deleteSoft-delete an annotation by ID. This hides the annotation from normal lists while preserving historical records.1 paramsSoft-delete an annotation by ID. This hides the annotation from normal lists while preserving historical records.
idnumberannotation-retrieveRetrieve a single annotation by ID from the current project. Use this when you already know the annotation ID and want complete details.1 paramsRetrieve a single annotation by ID from the current project. Use this when you already know the annotation ID and want complete details.
idnumberannotations-listList annotations in the current project, newest first. Use this to review existing deployment markers and analysis notes before adding new annotations.3 paramsList annotations in the current project, newest first. Use this to review existing deployment markers and analysis notes before adding new annotations.
limitnumberoffsetnumbersearchstringannotations-partial-updateUpdate an existing annotation by ID. You can change its text (`content`), when it happened (`date_marker`, ISO 8601), or its visibility scope (`project` or `organization`). Only the fields you provide are updated.4 paramsUpdate an existing annotation by ID. You can change its text (`content`), when it happened (`date_marker`, ISO 8601), or its visibility scope (`project` or `organization`). Only the fields you provide are updated.
idnumberscopestringdashboard_item · dashboard · project · organization · recordingcontentvaluedate_markervalueapproval-policies-listList all approval policies configured for this project. Shows which actions require approval, who can approve, and bypass rules.2 paramsList all approval policies configured for this project. Shows which actions require approval, who can approve, and bypass rules.
limitnumberoffsetnumberapproval-policy-getGet details of an approval policy including conditions, approver configuration, quorum requirements, and bypass rules.1 paramsGet details of an approval policy including conditions, approver configuration, quorum requirements, and bypass rules.
idstringbatch-export-createCreate a new batch export. Typed destination config schemas are available for Databricks and AzureBlob destinations — both require a team-scoped Integration (use integrations-list to find one). Other destination types are permitted by the API but typically must be created via...8 paramsCreate a new batch export. Typed destination config schemas are available for Databricks and AzureBlob destinations — both require a team-scoped Integration (use integrations-list to find one). Other destination types are permitted by the API but typically must be created via...
namestringmodelstringevents · persons · sessionspausedbooleanintervalstringhour · day · week · every 5 minutes · every 15 minutestimezonevalueoffset_dayvaluedestinationvalueoffset_hourvaluebatch-export-deleteSoft-delete a batch export. Stops all future scheduled runs and hides the export from list and get operations. Historic run records remain attached to the deleted export in the database.1 paramsSoft-delete a batch export. Stops all future scheduled runs and hides the export from list and get operations. Historic run records remain attached to the deleted export in the database.
idstringbatch-export-getGet a batch export by ID. Returns full non-sensitive configuration including destination type and config, linked Integration id (for Databricks and AzureBlob), schedule, model, and the 10 most recent runs.1 paramsGet a batch export by ID. Returns full non-sensitive configuration including destination type and config, linked Integration id (for Databricks and AzureBlob), schedule, model, and the 10 most recent runs.
idstringbatch-export-updatePartially update a batch export. Top-level fields (name, paused, interval, schema, filters) work for any destination type. Destination config updates are only typed for Databricks and AzureBlob destinations. Do not change the model field on an existing export — the destination...9 paramsPartially update a batch export. Top-level fields (name, paused, interval, schema, filters) work for any destination type. Destination config updates are only typed for Databricks and AzureBlob destinations. Do not change the model field on an existing export — the destination...
idstringnamestringmodelstringevents · persons · sessionspausedbooleanintervalstringhour · day · week · every 5 minutes · every 15 minutestimezonevalueoffset_dayvaluedestinationvalueoffset_hourvaluebatch-exports-listList batch exports in the project. Batch exports send event, person, or session data on a schedule to destinations like S3, Snowflake, BigQuery, Databricks, Azure Blob, Postgres, Redshift, or HTTP. Returns destination type, interval, paused state, and non-sensitive config; cre...2 paramsList batch exports in the project. Batch exports send event, person, or session data on a schedule to destinations like S3, Snowflake, BigQuery, Databricks, Azure Blob, Postgres, Redshift, or HTTP. Returns destination type, interval, paused state, and non-sensitive config; cre...
limitnumberoffsetnumbercdp-function-templates-listList available function templates. Templates are pre-built function configurations for common integrations (Slack, webhooks, email, etc.) and transformations (GeoIP, etc.). Filter by type (destination, site_destination, site_app, transformation, etc.) via the 'type' query para...5 paramsList available function templates. Templates are pre-built function configurations for common integrations (Slack, webhooks, email, etc.) and transformations (GeoIP, etc.). Filter by type (destination, site_destination, site_app, transformation, etc.) via the 'type' query para...
typestringlimitnumbertypesstringoffsetnumbertemplate_idstringcdp-function-templates-retrieveGet a specific function template by its template ID (e.g. 'template-slack', 'template-geoip'). Returns the full template including source code, inputs schema, default filters, and mapping templates. Use this to understand what inputs a template requires before creating a funct...1 paramsGet a specific function template by its template ID (e.g. 'template-slack', 'template-geoip'). Returns the full template including source code, inputs schema, default filters, and mapping templates. Use this to understand what inputs a template requires before creating a funct...
template_idstringcdp-functions-createCreate a new function. Requires 'type' (destination, site_destination, internal_destination, source_webhook, warehouse_source_webhook, site_app, or transformation) and either 'hog' source code or a 'template_id' to derive code from a template. Provide 'inputs_schema' to define...13 paramsCreate a new function. Requires 'type' (destination, site_destination, internal_destination, source_webhook, warehouse_source_webhook, site_app, or transformation) and either 'hog' source code or a 'template_id' to derive code from a template. Provide 'inputs_schema' to define...
hogstringnamevaluetypevalueinputsobjectenabledbooleanfiltersobjectmaskingvalueicon_urlvaluemappingsvaluedescriptionstringtemplate_idvalueinputs_schemaarrayexecution_ordervaluecdp-functions-deleteDelete a function by ID (soft delete). The function will no longer appear in lists or process events, but historical data is preserved.1 paramsDelete a function by ID (soft delete). The function will no longer appear in lists or process events, but historical data is preserved.
idstringcdp-functions-invocations-createTest-invoke a function with a mock event payload. Sends the function configuration and test data to the plugin server for execution and returns logs and status. Use 'mock_async_functions: true' (default) to simulate external calls like fetch() without making real HTTP requests.6 paramsTest-invoke a function with a mock event payload. Sends the function configuration and test data to the plugin server for execution and returns logs and status. Use 'mock_async_functions: true' (default) to simulate external calls like fetch() without making real HTTP requests.
idstringglobalsobjectconfigurationobjectinvocation_idvalueclickhouse_eventobjectmock_async_functionsbooleancdp-functions-listList all functions (destinations, transformations, site apps, and source webhooks) in the project. Returns each function's name, type, enabled status, execution order, template info, and filters (the event/property filter expression that gates the function). Filter by type (de...8 paramsList all functions (destinations, transformations, site apps, and source webhooks) in the project. Returns each function's name, type, enabled status, execution order, template info, and filters (the event/property filter expression that gates the function). Filter by type (de...
idstringtypearraylimitnumberoffsetnumberenabledbooleancreated_atstringcreated_bynumberupdated_atstringcdp-functions-logs-retrieveRetrieve execution logs for a specific CDP function by ID. Returns log entries with timestamp, level (DEBUG, LOG, INFO, WARN, ERROR), and message. Use to debug why a destination or transformation is failing or not producing expected results. Supports filtering by log level, te...7 paramsRetrieve execution logs for a specific CDP function by ID. Returns log entries with timestamp, level (DEBUG, LOG, INFO, WARN, ERROR), and message. Use to debug why a destination or transformation is failing or not producing expected results. Supports filtering by log level, te...
idstringafterstringlevelstringlimitnumberbeforestringsearchstringinstance_idstringcdp-functions-metrics-retrieveRetrieve execution metrics for a specific CDP function by ID. Returns time-series data showing success and failure counts over a configurable interval (hour, day, or week). Use to understand function health, identify failure spikes, and monitor delivery reliability. Supports b...8 paramsRetrieve execution metrics for a specific CDP function by ID. Returns time-series data showing success and failure counts over a configurable interval (hour, day, or week). Use to understand function health, identify failure spikes, and monitor delivery reliability. Supports b...
idstringkindstringnamestringafterstringbeforestringintervalstringhour · day · weekdefault: dayinstance_idstringbreakdown_bystringname · kinddefault: kindcdp-functions-partial-updatePartially update a function. Can enable/disable the function, change its name, description, source code, inputs, filters, mappings, or masking config. The 'type' field cannot be changed after creation. To delete a function, use the cdp-functions-delete tool instead.14 paramsPartially update a function. Can enable/disable the function, change its name, description, source code, inputs, filters, mappings, or masking config. The 'type' field cannot be changed after creation. To delete a function, use the cdp-functions-delete tool instead.
idstringhogstringnamevaluetypevalueinputsobjectenabledbooleanfiltersobjectmaskingvalueicon_urlvaluemappingsvaluedescriptionstringtemplate_idvalueinputs_schemaarrayexecution_ordervaluecdp-functions-rearrange-partial-updateUpdate the execution order of transformation functions. Send an 'orders' object mapping function UUIDs to their new execution_order integer values. Only applies to functions with type=transformation. Returns the updated list of transformations.1 paramsUpdate the execution order of transformation functions. Send an 'orders' object mapping function UUIDs to their new execution_order integer values. Only applies to functions with type=transformation. Returns the updated list of transformations.
ordersobjectcdp-functions-retrieveGet a specific function by ID. Returns the full configuration including source code, inputs schema, input values (secrets are masked), filters, mappings, masking config, and runtime status.1 paramsGet a specific function by ID. Returns the full configuration including source code, inputs schema, input values (secrets are masked), filters, mappings, masking config, and runtime status.
idstringchange-request-getGet a specific change request by ID, including the full intent, policy snapshot, approval votes, and current state.1 paramsGet a specific change request by ID, including the full intent, policy snapshot, approval votes, and current state.
idstringchange-requests-listList approval requests (change requests) for the current project. Returns pending, approved, rejected, and expired requests with vote status and staleness info. Useful for understanding what governance actions are waiting for review.7 paramsList approval requests (change requests) for the current project. Returns pending, approved, rejected, and expired requests with vote status and staleness info. Useful for understanding what governance actions are waiting for review.
limitnumberstatearrayoffsetnumberrequesternumberaction_keystringresource_idstringresource_typestringcohorts-add-persons-to-static-cohort-partial-updateAdd persons to a static cohort by their UUIDs. Only works for static cohorts (is_static: true).2 paramsAdd persons to a static cohort by their UUIDs. Only works for static cohorts (is_static: true).
idnumberperson_idsarraycohorts-createCreate a new cohort. For dynamic cohorts, provide 'filters' with AND/OR groups of property conditions (person properties, behavioral filters, or cohort references). For static cohorts, set 'is_static: true' then use the 'cohorts-add-persons-to-static-cohort-partial-update' too...6 paramsCreate a new cohort. For dynamic cohorts, provide 'filters' with AND/OR groups of property conditions (person properties, behavioral filters, or cohort references). For static cohorts, set 'is_static: true' then use the 'cohorts-add-persons-to-static-cohort-partial-update' too...
namevaluequeryvaluefiltersvalueis_staticbooleancohort_typevaluedescriptionstringcohorts-listList all cohorts in the project. Returns a summary of each cohort including id, name, description, count (person count), is_static (cohort type), and created_at timestamp. Use 'cohorts-retrieve' with the cohort ID to get full details including filters, calculation status, and...2 paramsList all cohorts in the project. Returns a summary of each cohort including id, name, description, count (person count), is_static (cohort type), and created_at timestamp. Use 'cohorts-retrieve' with the cohort ID to get full details including filters, calculation status, and...
limitnumberoffsetnumbercohorts-partial-updateUpdate an existing cohort's name, description, or filters. Changing filters on a dynamic cohort triggers recalculation. To soft-delete a cohort, set 'deleted: true'.8 paramsUpdate an existing cohort's name, description, or filters. Changing filters on a dynamic cohort triggers recalculation. To soft-delete a cohort, set 'deleted: true'.
idnumbernamevaluequeryvaluedeletedbooleanfiltersvalueis_staticbooleancohort_typevaluedescriptionstringcohorts-retrieveGet a specific cohort by ID. Returns the cohort name, description, filters (for dynamic cohorts), count of matching users, and calculation status.1 paramsGet a specific cohort by ID. Returns the cohort name, description, filters (for dynamic cohorts), count of matching users, and calculation status.
idnumbercohorts-rm-person-from-static-cohort-partial-updateRemove a person from a static cohort by their UUID. Only works for static cohorts (is_static: true). The person must exist in the project. Idempotent: removing a person who exists but is not a member of the cohort succeeds silently.2 paramsRemove a person from a static cohort by their UUID. Only works for static cohorts (is_static: true). The person must exist in the project. Idempotent: removing a person who exists but is not a member of the cohort succeeds silently.
idnumberperson_idstringcomment-countGet the count of comments, optionally filtered by scope and item_id.Get the count of comments, optionally filtered by scope and item_id.
No parameter schema in public metadata yet.
comment-getGet a specific comment by ID including its content, rich content with mentions, and metadata.1 paramsGet a specific comment by ID including its content, rich content with mentions, and metadata.
idstringcomment-threadGet the full thread of replies for a parent comment. Useful for reading complete discussions on a resource.1 paramsGet the full thread of replies for a parent comment. Useful for reading complete discussions on a resource.
idstringcomments-listList comments across the project. Filter by scope (Dashboard, FeatureFlag, Insight, etc.) and item_id to find discussions on specific resources. Returns comment content, author, and threading info.7 paramsList comments across the project. Filter by scope (Dashboard, FeatureFlag, Insight, etc.) and item_id to find discussions on specific resources. Returns comment content, author, and threading info.
kindstringany · comment · taskscopestringcursorstringsearchstringitem_idstringcompletedstringany · open · completedsource_commentstringconversations-tickets-listList support tickets in the project. Supports filtering by status (new, open, pending, on_hold, resolved), priority (low, medium, high), channel_source (widget, email, slack), assignee, date range, and search. Results are paginated and ordered by updated_at descending by defau...14 paramsList support tickets in the project. Supports filtering by status (new, open, pending, on_hold, resolved), priority (low, medium, high), channel_source (widget, email, slack), assignee, date range, and search. Results are paginated and ordered by updated_at descending by defau...
slastringat-risk · breached · on-tracktagsstringlimitnumberoffsetnumbersearchstringstatusstringdate_tostringassigneestringorder_bystringprioritystringdate_fromstringdistinct_idsstringchannel_detailstringgithub_issue · slack_bot_mention · slack_channel_message · slack_emoji_reaction · teams_bot_mention · teams_channel_messagechannel_sourcestringemail · github · slack · teams · widgetconversations-tickets-retrieveGet a specific support ticket by ID or ticket number. Returns full ticket details including status, priority, assignee, message count, channel info, person data, and session context.1 paramsGet a specific support ticket by ID or ticket number. Returns full ticket details including status, priority, assignee, message count, channel info, person data, and session context.
idstringconversations-tickets-updateUpdate a support ticket. Can change status (new, open, pending, on_hold, resolved), priority (low, medium, high), assignee, SLA deadline, escalation reason, and tags. Assignee should be an object with type ('user' or 'role') and id, or null to unassign.6 paramsUpdate a support ticket. Can change status (new, open, pending, on_hold, resolved), priority (low, medium, high), assignee, SLA deadline, escalation reason, and tags. Assignee should be an object with type ('user' or 'role') and id, or null to unassign.
idstringtagsarraystatusstringnew · open · pending · on_hold · resolvedpriorityvaluesla_due_atvaluesnoozed_untilvaluecreate-feature-flagCreate a feature flag in the current project.6 paramsCreate a feature flag in the current project.
keystringnamestringtagsarrayactivebooleanfiltersobjectevaluation_contextsarray
Docs - Community - Roadmap - Why PostHog? - Changelog - Bug reports
PostHog provides every tool you need to build a successful product including:
Best of all, all of this is free to use with a generous monthly free tier for each product. Get started by signing up for PostHog Cloud US or PostHog Cloud EU.
The fastest and most reliable way to get started with PostHog is signing up for free to PostHog Cloud or PostHog Cloud EU. Your first 1 million events, 5k recordings, 1M flag requests, 100k exceptions, and 1500 survey responses are free every month, after which you pay based on usage.
If you want to self-host PostHog, you can deploy a hobby instance in one line on Linux with Docker (recommended 4GB memory):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/posthog/posthog/HEAD/bin/deploy-hobby)"
Open source deployments should scale to approximately 100k events per month, after which we recommend migrating to a PostHog Cloud.
We do not provide customer support or offer guarantees for open source deployments. See our self-hosting docs, troubleshooting guide, and disclaimer for more info.
Once you've got a PostHog instance, you can set it up by installing our JavaScript web snippet, one of our SDKs, or by using our API.
We have SDKs and libraries for popular languages and frameworks like:
| Frontend | Mobile | Backend |
|---|---|---|
| JavaScript | React Native | Python |
| Next.js | Android | Node |
| React | iOS | PHP |
| Vue | Flutter | Ruby |
Beyond this, we have docs and guides for Go, .NET/C#, Django, Angular, WordPress, Webflow, and more.
Once you've installed PostHog, see our product docs for more information on how to set up product analytics, web analytics, session replays, feature flags, experiments, error tracking, surveys, data warehouse, and more.
Our code isn't the only thing that's open source 😳. We also open source our company handbook which details our strategy, ways of working, and processes.
Curious about how to make the most of PostHog? We wrote a guide to winning with PostHog which walks you through the basics of measuring activation, tracking retention, and capturing revenue.
We <3 contributions big and small:
For an overview of the codebase structure, see monorepo layout and products.
This repo is available under the MIT expat license, except for the ee directory (which has its license here) if applicable.
Need absolutely 💯% FOSS? Check out our posthog-foss repository, which is purged of all proprietary code and features.
The pricing for our paid plan is completely transparent and available on our pricing page.
Hey! If you're reading this, you've proven yourself as a dedicated README reader.
You might also make a great addition to our team. We're growing fast and would love for you to join us.
io.github.infoinlet-marketplace/mcp-observability
betterdb-inc/monitor
com.mcparmory/datadog
thotischner/observability-mcp
io.github.tantiope/datadog-mcp
mshegolev/kibana-mcp