CCM
/MCP
SkillsMCPMarketplacesDigestLearnAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Learn
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

PostHog MCP Server

posthog/posthog
35k80 toolsauthHTTP, SSEregistry active
Summary

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.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →

Tools

Public tool metadata for what this MCP can expose to an agent.

80 tools
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 params

Get 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).

Parameters* required
idnumber
The ID of the experiment to get comprehensive results for
refreshboolean
Force refresh of results instead of using cached values. Defaults to false.default: false
experiment-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 params

DEPRECATED: renamed to experiment-list. This alias forwards to experiment-list and will be removed. Call experiment-list directly with the same arguments.

Parameters* required
limitnumber
Number of results to return per page.
orderstring
Field to order by. Prefix with '-' for descending. Allowlisted fields include name, created_at, updated_at, start_date, end_date, duration, and status.
offsetnumber
The initial index from which to return the results.
searchstring
Free-text search applied to the experiment name (case-insensitive).
statusstring
Filter by experiment status. Values: "draft" (not yet launched), "running" (launched, flag active), "paused" (launched, flag deactivated — mutually exclusive with running), "stopped" or "complete" (both mean ended), "all" (no filter). Defaults to all non-archived experiments.one of all · complete · draft · paused · running · stopped
archivedboolean
Filter by archived state. Defaults to non-archived experiments only.
created_by_idnumber
Filter to experiments created by the given user ID.
feature_flag_idnumber
Filter to experiments linked to the given feature flag ID.
insight-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 params

Execute 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...

Parameters* required
insightIdstring
The insight ID or short_id to run.
output_formatstring
Output format. "optimized" returns a human-readable summary from server-side formatters (recommended for analysis). "json" returns the raw query results as JSON.one of optimized · jsondefault: optimized
filters_overridevalue
Object (or pre-encoded JSON string) to override the insight's filters for this run only (not persisted). Top-level keys replace; nested values are not deep-merged — pass the complete value for any key you override. Accepts the same keys as the dashboard filters schema (e.g., `date_from`, `date_to`, `properties`). Ignored when accessed via a sharing token.
variables_overridevalue
Object (or pre-encoded JSON string) to override the insight's HogQL variables for this run only (not persisted). Format: {"<variable_id>": {"code_name": "<code_name>", "variableId": "<variable_id>", "value": <new_value>}}. Each entry must include `code_name` — partial entries are silently dropped. The simplest workflow is to call `insight-get` first, copy the matching entry from the response's query variables, and mutate `value`. Top-level keys replace; nested values are not deep-merged. Ignored when accessed via a sharing token.
query-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 params

You 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...

Parameters* required
queryvalue
query-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 params

Dry-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...

Parameters* required
querystring
The HogQL (ClickHouse-flavored SQL) query to validate. Parsed and type-checked without executing, so there is no ClickHouse cost.
languagestring
Language to validate. Defaults to 'hogQL' (full SELECT statements). Use 'hogQLExpr' for a bare expression, 'hog' or 'hogTemplate' for Hog source.one of hogQL · hogQLExpr · hog · hogTemplatedefault: hogQL
connectionIdstring
Optional id of an external data source (e.g. a Postgres or DuckDB direct-query connection). When set, validates against that source instead of the ClickHouse catalog. Use external-data-sources-list to discover available connection ids.
hogql-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 params

Return 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...

Parameters* required
connectionIdstring
Optional id of an external data source (e.g. a Postgres or DuckDB direct-query connection). When set, returns the schema of that source instead of the ClickHouse catalog. Use external-data-sources-list to discover available connection ids.
query-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 params

This 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...

Parameters* required
questionstring
Your natural language query describing the SQL insight (max 1000 characters).
get-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 params

Fetches 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...

Parameters* required
daysnumber
projectIdinteger
switch-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 params

Change 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.

Parameters* required
orgIdstring
projects-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 params

List all event definitions in the project with optional filtering. Can filter by search term.

Parameters* required
qstring
Search query to filter event names. Only use if there are lots of events.
limitinteger
offsetinteger
event-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 params

Update event definition metadata. Can update description, tags, mark status as verified or hidden. Use exact event name like '$pageview' or 'user_signed_up'.

Parameters* required
dataobject
The event definition data to update
eventNamestring
The name of the event to update (e.g. "$pageview", "user_signed_up")
properties-listList properties for events or persons. If fetching event properties, you must provide an event name.5 params

List properties for events or persons. If fetching event properties, you must provide an event name.

Parameters* required
typestring
Type of properties to getone of event · person
limitinteger
offsetinteger
eventNamestring
Event name to filter properties by, required for event type
includePredefinedPropertiesboolean
Whether to include predefined properties
switch-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 params

Change 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.

Parameters* required
projectIdinteger
survey-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 params

Creates 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...

Parameters* required
namestring
Survey name.
typestring
Survey type. Use popover for most in-app surveys, widget for always-available feedback entrypoints, external_survey for hosted forms with a shareable public URL, and api only for headless custom implementations.one of popover · widget · external_survey · api
schedulevalue
Survey scheduling behavior. Omit this to use the default once behavior. Use recurring only when the user explicitly asks for a repeated schedule.
questionsvalue
Complete survey question list. Prefer 1-3 questions unless the user explicitly asks for a longer survey. Use rating questions for NPS/CSAT, open for freeform feedback, and choice questions when the user wants structured answers. Questions can include inline translations on each question.
appearancevalue
Survey appearance customization.
conditionsvalue
Display and targeting conditions for in-app surveys, such as URL matching, event triggers, device filters, or linked flag variants. Do not use URL, selector, event, device, or linkedFlagVariant conditions for external_survey forms.
start_datevalue
Setting this launches the survey immediately. Leave unset unless the user explicitly asks to launch now.
descriptionstring
Survey description.
form_contentvalue
Optional hosted-form content configuration for external_survey forms. Only include this when the user explicitly asks to customize the hosted form content beyond the standard question flow.
translationsvalue
Optional survey-level translations keyed by language code. Use for translated survey name, description, and thank-you message fields. Question text translations belong inside each question's translations object.
linked_flag_idvalue
Feature flag ID linked to this survey. Use only when the user explicitly wants the survey linked to a feature flag. Resolve the flag ID first, preferably with SQL in v2.
iteration_countvalue
For a recurring schedule, this field specifies the number of times the survey should be shown to the user. Use 1 for 'once every X days', higher numbers for multiple repetitions. Works together with iteration_frequency_days to determine the overall survey schedule.
responses_limitvalue
The maximum number of responses before automatically stopping the survey.
targeting_flag_filtersvalue
User targeting rules for in-app surveys. Use only when the user wants the survey shown to a subset of users. Do not use this for external_survey forms.
enable_iframe_embeddingvalue
Allows an external_survey form to be embedded in an iframe. Use only when the user explicitly asks for iframe embedding.
enable_partial_responsesvalue
When at least one question is answered, the response is stored (true). The response is stored when all questions are answered (false).
iteration_frequency_daysvalue
For a recurring schedule, this field specifies the interval in days between each survey instance shown to the user, used alongside iteration_count for precise scheduling.
survey-getGet a specific survey by ID. Returns the survey configuration including questions, targeting, and scheduling details.1 params

Get a specific survey by ID. Returns the survey configuration including questions, targeting, and scheduling details.

Parameters* required
idstring
A UUID string identifying this survey.
surveys-get-allGet all surveys in the project with optional filtering. Can filter by search term or use pagination.4 params

Get all surveys in the project with optional filtering. Can filter by search term or use pagination.

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
searchstring
Fuzzy match against survey `name` and `description` using Postgres trigram word similarity. Supports typos and prefix-as-you-type.
archivedboolean
survey-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 params

Update 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...

Parameters* required
idstring
A UUID string identifying this survey.
namestring
Survey name.
typestring
Survey type. * `popover` - popover * `widget` - widget * `external_survey` - external survey * `api` - apione of popover · widget · external_survey · api
archivedboolean
Archive state for the survey.
end_datevalue
When the survey stopped being shown to users. Setting this will complete the survey.
schedulevalue
Survey scheduling behavior: 'once' = show once per user (default), 'recurring' = repeat based on iteration_count and iteration_frequency_days settings, 'always' = show every time conditions are met (mainly for widget surveys) * `once` - once * `recurring` - recurring * `always` - always
questionsvalue
Complete replacement question list. Existing question IDs are tied to response data and must be preserved. Before sending this field, fetch the survey first, modify the existing question objects in place, keep every unchanged or edited question's id, and include the complete intended ordered question list. New questions should omit id. Do not regenerate existing questions from scratch.
appearancevalue
Survey appearance customization.
conditionsvalue
Complete replacement display and targeting conditions object. Do not provide this field unless changing display targeting. Preserve existing URL, selector, event, device, wait-period, and linked flag variant conditions unless explicitly changing them.
start_datevalue
Setting this will launch the survey immediately. Don't add a start_date unless explicitly requested to do so.
descriptionstring
Survey description.
form_contentvalue
Hosted-form content configuration for external_survey forms. Do not provide this field unless editing hosted-form content. Preserve existing content fields that should remain.
translationsvalue
Complete replacement survey-level translations object. Do not provide this field unless changing translations. Preserve existing language keys and translated fields that should remain. Use null only when the user explicitly asks to remove survey-level translations.
linked_flag_idvalue
The feature flag linked to this survey.
iteration_countvalue
For a recurring schedule, this field specifies the number of times the survey should be shown to the user. Use 1 for 'once every X days', higher numbers for multiple repetitions. Works together with iteration_frequency_days to determine the overall survey schedule.
responses_limitvalue
The maximum number of responses before automatically stopping the survey.
targeting_flag_idnumber
An existing targeting flag to use for this survey.
remove_targeting_flagvalue
Set to true to completely remove all targeting filters from the survey, making it visible to all users (subject to other display conditions like URL matching).
targeting_flag_filtersvalue
Target specific users based on their properties. Example: {groups: [{properties: [{key: 'email', value: ['@company.com'], operator: 'icontains'}], rollout_percentage: 100}]}
enable_iframe_embeddingvalue
enable_partial_responsesvalue
When at least one question is answered, the response is stored (true). The response is stored when all questions are answered (false).
iteration_frequency_daysvalue
For a recurring schedule, this field specifies the interval in days between each survey instance shown to the user, used alongside iteration_count for precise scheduling.
survey-deleteDelete a survey by ID (soft delete - marks as archived).1 params

Delete a survey by ID (soft delete - marks as archived).

Parameters* required
idstring
A UUID string identifying this survey.
surveys-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 params

Get 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.

Parameters* required
date_tostring
Optional ISO timestamp for end date (e.g. 2024-01-31T23:59:59Z)
date_fromstring
Optional ISO timestamp for start date (e.g. 2024-01-01T00:00:00Z)
survey-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 params

Get response statistics for a specific survey. Includes detailed event counts (shown, dismissed, sent), unique respondents, conversion rates, and timing data. Supports optional date filtering.

Parameters* required
idstring
A UUID string identifying this survey.
date_tostring
Optional ISO timestamp for end date (e.g. 2024-01-31T23:59:59Z)
date_fromstring
Optional ISO timestamp for start date (e.g. 2024-01-01T00:00:00Z)
entity-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 params

Search 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...

Parameters* required
querystring
Search query to find entities by name or description
entitiesarray
Entity types to search. If not specified, searches all types. Available: insight, dashboard, experiment, feature_flag, notebook, action, cohort, event_definition, survey
debug-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 params

Debug 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.

Parameters* required
messagestring
Optional message to include in the debug data
external-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 params

Validate 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...

Parameters* required
payloadobject
Connection credentials for the source. Keys depend on source_type. For database sources: host, port, database, user, password, schema. For SaaS sources: api_key or OAuth fields. Use external-data-sources-wizard to see required fields per source type.
source_typestring
The source type name (e.g. "Postgres", "MySQL", "Stripe"). Use external-data-sources-wizard to see available types and their required fields.
external-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 params

List 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.

Parameters* required
idstring
A UUID string identifying this external data source.
afterstring
ISO timestamp — only return jobs created after this date (e.g. "2025-01-01T00:00:00Z").
beforestring
ISO timestamp — only return jobs created before this date (e.g. "2025-12-31T23:59:59Z").
schemasarray
Filter jobs by table schema names (e.g. ["users", "orders"]). Only returns jobs for these tables.
external-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 params

Get 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...

Parameters* required
levelstring
Minimum log level to return. Defaults to INFO (excludes DEBUG).one of DEBUG · INFO · WARNING · ERROR
limitinteger
Max number of log entries to return (default 100).
job_idstring
Optional workflow_run_id to filter logs for a specific sync job. Get this from external-data-sources-jobs.
searchstring
Search string to filter log messages (case-insensitive substring match).
schema_idstring
UUID of the external data schema (table) to get sync logs for.
session-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 params

Generate 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...

Parameters* required
focus_areastring
Optional focus area for the summarization
session_idsarray
List of session IDs to summarize (max 300)
action-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 params

Create 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 '...

Parameters* required
namevalue
Name of the action (must be unique within the project)
tagsarray
stepsarray
Action steps defining trigger conditions. Each step matches events by name, properties, URL, or element attributes. Multiple steps are OR-ed together.
pinned_atvalue
ISO 8601 timestamp when the action was pinned, or null if not pinned. Set any value to pin, null to unpin.
descriptionstring
Human-readable description of what this action represents.
post_to_slackboolean
Whether to post a notification to Slack when this action is triggered.
slack_message_formatstring
Custom Slack message format. Supports templates with event properties.
action-deleteDelete an action by ID (soft delete - marks as deleted). The action will no longer appear in lists but historical data is preserved.1 params

Delete an action by ID (soft delete - marks as deleted). The action will no longer appear in lists but historical data is preserved.

Parameters* required
idnumber
A unique integer value identifying this action.
action-getGet a specific action by ID. Returns the action configuration including all steps and their trigger conditions.1 params

Get a specific action by ID. Returns the action configuration including all steps and their trigger conditions.

Parameters* required
idnumber
A unique integer value identifying this action.
action-updateUpdate an existing action by ID. Can update name, description, steps, tags, and Slack notification settings.8 params

Update an existing action by ID. Can update name, description, steps, tags, and Slack notification settings.

Parameters* required
idnumber
A unique integer value identifying this action.
namevalue
Name of the action (must be unique within the project).
tagsarray
stepsarray
Action steps defining trigger conditions. Each step matches events by name, properties, URL, or element attributes. Multiple steps are OR-ed together.
pinned_atvalue
ISO 8601 timestamp when the action was pinned, or null if not pinned. Set any value to pin, null to unpin.
descriptionstring
Human-readable description of what this action represents.
post_to_slackboolean
Whether to post a notification to Slack when this action is triggered.
slack_message_formatstring
Custom Slack message format. Supports templates with event properties.
actions-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 params

Get 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:...

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
activity-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 params

List 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.

Parameters* required
pagenumber
Page number for pagination. When provided, uses page-based pagination ordered by most recent first.
userstring
Filter by user UUID who performed the action.
scopestring
Filter by a single activity scope, e.g. "FeatureFlag", "Insight", "Dashboard", "Experiment". * `Cohort` - Cohort * `FeatureFlag` - FeatureFlag * `Person` - Person * `Group` - Group * `Insight` - Insight * `Plugin` - Plugin * `PluginConfig` - PluginConfig * `HogFunction` - HogFunction * `HogFlow` - HogFlow * `DataManagement` - DataManagement * `EventDefinition` - EventDefinition * `PropertyDefinition` - PropertyDefinition * `Notebook` - Notebook * `Endpoint` - Endpoint * `EndpointVersion` - EndpointVersion * `Dashboard` - Dashboard * `Replay` - Replay * `Experiment` - Experiment * `ExperimentHoldout` - ExperimentHoldout * `ExperimentSavedMetric` - ExperimentSavedMetric * `Survey` - Survey * `EarlyAccessFeature` - EarlyAccessFeature * `SessionRecordingPlaylist` - SessionRecordingPlaylist * `Comment` - Comment * `Team` - Team * `Project` - Project * `ErrorTrackingIssue` - ErrorTrackingIssue * `DataWarehouseSavedQuery` - DataWarehouseSavedQuery * `LegalDocument` - LegalDocument * `Organization` - Organization * `OrganizationDomain` - OrganizationDomain * `OrganizationMembership` - OrganizationMembership * `Role` - Role * `UserGroup` - UserGroup * `BatchExport` - BatchExport * `BatchImport` - BatchImport * `Integration` - Integration * `Annotation` - Annotation * `Tag` - Tag * `TaggedItem` - TaggedItem * `Subscription` - Subscription * `PersonalAPIKey` - PersonalAPIKey * `ProjectSecretAPIKey` - ProjectSecretAPIKey * `User` - User * `Action` - Action * `AlertConfiguration` - AlertConfiguration * `Threshold` - Threshold * `AlertSubscription` - AlertSubscription * `ExternalDataSource` - ExternalDataSource * `ExternalDataSchema` - ExternalDataSchema * `LLMTrace` - LLMTrace * `WebAnalyticsFilterPreset` - WebAnalyticsFilterPreset * `CustomerProfileConfig` - CustomerProfileConfig * `Log` - Log * `LogsAlertConfiguration` - LogsAlertConfiguration * `LogsExclusionRule` - LogsExclusionRule * `ProductTour` - ProductTour * `Ticket` - Ticketone of Cohort · FeatureFlag · Person · Group · Insight · Plugin
scopesarray
Filter by multiple activity scopes, comma-separated. Values must be valid ActivityScope enum values. E.g. "FeatureFlag,Insight".
item_idstring
Filter by the ID of the affected resource.
page_sizenumber
Number of results per page (default: 100, max: 1000). Only used with page-based pagination.default: 10
advanced-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 params

List activity log entries with advanced filtering, sorting, and field-level diffs. Supports filtering by scope, activity type, user, date range, and search text.

Parameters* required
pagenumber
Page number for pagination. When provided, uses page-based pagination ordered by most recent first.
usersarray
Filter by users who performed the activity (user UUIDs).
scopesarray
Filter by activity scopes (e.g. "FeatureFlag", "Insight").
clientsarray
Filter by API clients that generated the activity (from x-posthog-client header).
end_datestring
Upper bound on `created_at` (inclusive), ISO-8601.
item_idsarray
Filter by the `item_id` of the affected resource(s).
team_idsarray
Filter by project (team) IDs. Only honored on the organization-scoped endpoint; ignored on the project-scoped endpoint.
is_systemvalue
When set, filters rows authored by the system (no user).
page_sizenumber
Number of results per page (default: 100, max: 1000). Only used with page-based pagination.default: 10
activitiesarray
Filter by activity types (e.g. "created", "updated", "deleted").
start_datestring
Lower bound on `created_at` (inclusive), ISO-8601.
search_textstring
Free-text search across the `detail` JSON column.
hogql_filterstring
Reserved for future HogQL-based filtering.
detail_filtersstring
JSON-encoded map of `detail` field paths to {operation, value} filters. Allowed operations: exact, contains, in.
was_impersonatedvalue
When set, filters rows where the actor was impersonating another user.
alert-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 params

Create 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...

Parameters* required
namestring
Human-readable name for the alert.
configvalue
Trends-specific alert configuration. Includes series_index (which series to monitor) and check_ongoing_interval (whether to check the current incomplete interval).
enabledboolean
Whether the alert is actively being evaluated.
insightnumber
Insight ID monitored by this alert. Note: Response returns full InsightBasicSerializer object.
conditionvalue
Alert condition type. Determines how the value is evaluated: absolute_value, relative_increase, or relative_decrease.
thresholdobject
Threshold configuration with bounds and type for evaluating the alert.
skip_weekendvalue
Skip alert evaluation on weekends (Saturday and Sunday, local to project timezone).
snoozed_untilvalue
Snooze the alert until this time. Pass a relative date string (e.g. '2h', '1d') or null to unsnooze.
detector_configvalue
subscribed_usersarray
User IDs to subscribe to this alert. Note: Response returns full UserBasicSerializer object.
calculation_intervalstring
How often the alert is checked: hourly, daily, weekly, or monthly. * `hourly` - hourly * `daily` - daily * `weekly` - weekly * `monthly` - monthlyone of hourly · daily · weekly · monthly
schedule_restrictionvalue
Blocked local time windows (HH:MM in the project timezone). Interval is half-open [start, end): start inclusive, end exclusive. Use blocked_windows array of {start, end}. Null disables.
investigation_agent_enabledboolean
When enabled, an investigation agent runs on the state transition to firing and writes findings to a Notebook linked from the alert check. Only effective for detector-based (anomaly) alerts.
investigation_gates_notificationsboolean
When enabled (and investigation_agent_enabled is on), notification dispatch is held until the investigation agent produces a verdict. Notifications are suppressed when the verdict is false_positive (and optionally when inconclusive). A safety-net task force-fires after a few minutes if the investigation stalls.
investigation_inconclusive_actionstring
How to handle an 'inconclusive' verdict when notifications are gated. 'notify' is the safe default — an agent that can't be sure is itself useful signal. * `notify` - Notify * `suppress` - Suppressone of notify · suppress
alert-deleteDelete an alert by ID. This permanently removes the alert and all its check history. Subscribed users will no longer receive notifications.1 params

Delete an alert by ID. This permanently removes the alert and all its check history. Subscribed users will no longer receive notifications.

Parameters* required
idstring
A UUID string identifying this alert configuration.
alert-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 params

Get 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...

Parameters* required
idstring
A UUID string identifying this alert configuration.
checks_limitnumber
Maximum number of check results to return (default 5, max 500). Applied after date filtering.
checks_offsetnumber
Number of newest checks to skip (0-based). Use with checks_limit for pagination. Default 0.
checks_date_tostring
Relative date string for the end of the check history window (e.g. '-1h', '-1d'). Defaults to now if not specified.
checks_date_fromstring
Relative date string for the start of the check history window (e.g. '-24h', '-7d', '-14d'). Returns checks created after this time. Max retention is 14 days.
alert-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 params

Run 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,...

Parameters* required
insightnumber
Insight ID to simulate the detector on.
date_fromvalue
Relative date string for how far back to simulate (e.g. '-24h', '-30d', '-4w'). If not provided, uses the detector's minimum required samples.
series_indexnumber
Zero-based index of the series to analyze.default: 0
detector_configvalue
Detector configuration to simulate.
alert-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 params

Update 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....

Parameters* required
idstring
A UUID string identifying this alert configuration.
namestring
Human-readable name for the alert.
configvalue
Trends-specific alert configuration. Includes series_index (which series to monitor) and check_ongoing_interval (whether to check the current incomplete interval).
enabledboolean
Whether the alert is actively being evaluated.
insightnumber
Insight ID monitored by this alert. Note: Response returns full InsightBasicSerializer object.
conditionvalue
Alert condition type. Determines how the value is evaluated: absolute_value, relative_increase, or relative_decrease.
thresholdobject
Threshold configuration with bounds and type for evaluating the alert.
skip_weekendvalue
Skip alert evaluation on weekends (Saturday and Sunday, local to project timezone).
snoozed_untilvalue
Snooze the alert until this time. Pass a relative date string (e.g. '2h', '1d') or null to unsnooze.
detector_configvalue
subscribed_usersarray
User IDs to subscribe to this alert. Note: Response returns full UserBasicSerializer object.
calculation_intervalstring
How often the alert is checked: hourly, daily, weekly, or monthly. * `hourly` - hourly * `daily` - daily * `weekly` - weekly * `monthly` - monthlyone of hourly · daily · weekly · monthly
schedule_restrictionvalue
Blocked local time windows (HH:MM in the project timezone). Interval is half-open [start, end): start inclusive, end exclusive. Use blocked_windows array of {start, end}. Null disables.
investigation_agent_enabledboolean
When enabled, an investigation agent runs on the state transition to firing and writes findings to a Notebook linked from the alert check. Only effective for detector-based (anomaly) alerts.
investigation_gates_notificationsboolean
When enabled (and investigation_agent_enabled is on), notification dispatch is held until the investigation agent produces a verdict. Notifications are suppressed when the verdict is false_positive (and optionally when inconclusive). A safety-net task force-fires after a few minutes if the investigation stalls.
investigation_inconclusive_actionstring
How to handle an 'inconclusive' verdict when notifications are gated. 'notify' is the safe default — an agent that can't be sure is itself useful signal. * `notify` - Notify * `suppress` - Suppressone of notify · suppress
alerts-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 params

List 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_...

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
annotation-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 params

Create 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`.

Parameters* required
scopestring
Annotation visibility scope: `project`, `organization`, `dashboard`, or `dashboard_item`. `recording` is deprecated and rejected. * `dashboard_item` - insight * `dashboard` - dashboard * `project` - project * `organization` - organization * `recording` - recordingone of dashboard_item · dashboard · project · organization · recording
contentvalue
Annotation text shown on charts to describe the change, release, or incident.
date_markervalue
When this annotation happened (ISO 8601 timestamp). Used to position it on charts.
annotation-deleteSoft-delete an annotation by ID. This hides the annotation from normal lists while preserving historical records.1 params

Soft-delete an annotation by ID. This hides the annotation from normal lists while preserving historical records.

Parameters* required
idnumber
A unique integer value identifying this annotation.
annotation-retrieveRetrieve a single annotation by ID from the current project. Use this when you already know the annotation ID and want complete details.1 params

Retrieve a single annotation by ID from the current project. Use this when you already know the annotation ID and want complete details.

Parameters* required
idnumber
A unique integer value identifying this annotation.
annotations-listList annotations in the current project, newest first. Use this to review existing deployment markers and analysis notes before adding new annotations.3 params

List annotations in the current project, newest first. Use this to review existing deployment markers and analysis notes before adding new annotations.

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
searchstring
A search term.
annotations-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 params

Update 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.

Parameters* required
idnumber
A unique integer value identifying this annotation.
scopestring
Annotation visibility scope: `project`, `organization`, `dashboard`, or `dashboard_item`. `recording` is deprecated and rejected. * `dashboard_item` - insight * `dashboard` - dashboard * `project` - project * `organization` - organization * `recording` - recordingone of dashboard_item · dashboard · project · organization · recording
contentvalue
Annotation text shown on charts to describe the change, release, or incident.
date_markervalue
When this annotation happened (ISO 8601 timestamp). Used to position it on charts.
approval-policies-listList all approval policies configured for this project. Shows which actions require approval, who can approve, and bypass rules.2 params

List all approval policies configured for this project. Shows which actions require approval, who can approve, and bypass rules.

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
approval-policy-getGet details of an approval policy including conditions, approver configuration, quorum requirements, and bypass rules.1 params

Get details of an approval policy including conditions, approver configuration, quorum requirements, and bypass rules.

Parameters* required
idstring
A UUID string identifying this approval policy.
batch-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 params

Create 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...

Parameters* required
namestring
Human-readable name for the batch export.
modelstring
Which data model to export (events, persons, sessions). * `events` - Events * `persons` - Persons * `sessions` - Sessionsone of events · persons · sessions
pausedboolean
Whether the batch export is paused.
intervalstring
How often the batch export should run. * `hour` - hour * `day` - day * `week` - week * `every 5 minutes` - every 5 minutes * `every 15 minutes` - every 15 minutesone of hour · day · week · every 5 minutes · every 15 minutes
timezonevalue
IANA timezone name (e.g. 'America/New_York', 'Europe/London', 'UTC') controlling daily and weekly interval boundaries.
offset_dayvalue
Day-of-week offset for weekly intervals (0=Sunday, 6=Saturday).
destinationvalue
Destination configuration. Required integration_id is enforced per destination type.
offset_hourvalue
Hour-of-day offset (0-23) for daily and weekly intervals.
batch-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 params

Soft-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.

Parameters* required
idstring
A UUID string identifying this batch export.
batch-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 params

Get 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.

Parameters* required
idstring
A UUID string identifying this batch export.
batch-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 params

Partially 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...

Parameters* required
idstring
A UUID string identifying this batch export.
namestring
Human-readable name for the batch export.
modelstring
Which data model to export (events, persons, sessions). * `events` - Events * `persons` - Persons * `sessions` - Sessionsone of events · persons · sessions
pausedboolean
Whether the batch export is paused.
intervalstring
How often the batch export should run. * `hour` - hour * `day` - day * `week` - week * `every 5 minutes` - every 5 minutes * `every 15 minutes` - every 15 minutesone of hour · day · week · every 5 minutes · every 15 minutes
timezonevalue
IANA timezone name (e.g. 'America/New_York', 'Europe/London', 'UTC') controlling daily and weekly interval boundaries.
offset_dayvalue
Day-of-week offset for weekly intervals (0=Sunday, 6=Saturday).
destinationvalue
Destination configuration. Required integration_id is enforced per destination type.
offset_hourvalue
Hour-of-day offset (0-23) for daily and weekly intervals.
batch-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 params

List 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...

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
cdp-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 params

List 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...

Parameters* required
typestring
Filter by template type (e.g. destination, email, sms_provider, broadcast). Defaults to destination if neither type nor types is provided.
limitnumber
Number of results to return per page.
typesstring
Comma-separated list of template types to include (e.g. destination,email,sms_provider).
offsetnumber
The initial index from which to return the results.
template_idstring
Filter to a specific template by its template_id. Deprecated templates are excluded from list results; use the retrieve endpoint to look up a template by ID regardless of status.
cdp-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 params

Get 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...

Parameters* required
template_idstring
cdp-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 params

Create 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...

Parameters* required
hogstring
Source code for the function. For most types this is Hog code; for site_destination and site_app types this is TypeScript. Required if no template_id is provided.
namevalue
Display name for the function.
typevalue
Function type. One of: destination, site_destination, internal_destination, source_webhook, warehouse_source_webhook, site_app, transformation.
inputsobject
Values for each input defined in inputs_schema.
enabledboolean
Whether the function is active and processing events.
filtersobject
Event filters that control which events trigger this function.
maskingvalue
PII masking configuration with TTL, threshold, and hash expression.
icon_urlvalue
URL for the function's icon displayed in the UI.
mappingsvalue
Event-to-destination field mappings. Only for destination and site_destination types.
descriptionstring
Human-readable description of what this function does.
template_idvalue
ID of a HogFunctionTemplate to derive defaults from (code, inputs_schema, icon, name, description). Use the cdp-function-templates-list tool to find available templates.
inputs_schemaarray
Schema defining the configurable input parameters for this function.
execution_ordervalue
Execution priority for transformation functions (lower runs first). Only applies to type=transformation. If omitted, the function is appended at the end.
cdp-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 params

Delete a function by ID (soft delete). The function will no longer appear in lists or process events, but historical data is preserved.

Parameters* required
idstring
A UUID string identifying this hog function.
cdp-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 params

Test-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.

Parameters* required
idstring
A UUID string identifying this hog function.
globalsobject
Mock global variables available during test invocation.
configurationobject
Full function configuration to test.
invocation_idvalue
Optional invocation ID for correlation.
clickhouse_eventobject
Mock ClickHouse event data to test the function with.
mock_async_functionsboolean
When true (default), async functions like fetch() are simulated.default: true
cdp-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 params

List 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...

Parameters* required
idstring
typearray
Multiple values may be separated by commas.
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
enabledboolean
created_atstring
created_bynumber
updated_atstring
cdp-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 params

Retrieve 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...

Parameters* required
idstring
A UUID string identifying this hog function.
afterstring
Only return entries after this ISO 8601 timestamp.
levelstring
Comma-separated log levels to include, e.g. 'WARN,ERROR'. Valid levels: DEBUG, LOG, INFO, WARN, ERROR.
limitnumber
Maximum number of log entries to return (1-500, default 50).default: 50
beforestring
Only return entries before this ISO 8601 timestamp.
searchstring
Case-insensitive substring search across log messages.
instance_idstring
Filter logs to a specific execution instance.
cdp-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 params

Retrieve 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...

Parameters* required
idstring
A UUID string identifying this hog function.
kindstring
Comma-separated metric kinds to filter by, e.g. 'success,failure'.
namestring
Comma-separated metric names to filter by.
afterstring
Start of the time range. Accepts relative formats like '-7d', '-24h' or ISO 8601 timestamps. Defaults to '-7d'.default: -7d
beforestring
End of the time range. Same format as 'after'. Defaults to now.
intervalstring
Time bucket size for the series. One of: hour, day, week. Defaults to 'day'. * `hour` - hour * `day` - day * `week` - weekone of hour · day · weekdefault: day
instance_idstring
Filter metrics to a specific execution instance.
breakdown_bystring
Group the series by metric 'name' or 'kind'. Defaults to 'kind'. * `name` - name * `kind` - kindone of name · kinddefault: kind
cdp-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 params

Partially 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.

Parameters* required
idstring
A UUID string identifying this hog function.
hogstring
Source code. Hog language for most types; TypeScript for site_destination and site_app.
namevalue
Display name for the function.
typevalue
Function type: destination, site_destination, internal_destination, source_webhook, warehouse_source_webhook, site_app, or transformation. * `destination` - Destination * `site_destination` - Site Destination * `internal_destination` - Internal Destination * `source_webhook` - Source Webhook * `warehouse_source_webhook` - Warehouse Source Webhook * `site_app` - Site App * `transformation` - Transformation
inputsobject
Values for each input defined in inputs_schema.
enabledboolean
Set to true to activate or false to deactivate the function.
filtersobject
Event filters that control which events trigger this function.
maskingvalue
PII masking configuration with TTL, threshold, and hash expression.
icon_urlvalue
URL for the function's icon displayed in the UI.
mappingsvalue
Event-to-destination field mappings. Only for destination and site_destination types.
descriptionstring
Human-readable description of what this function does.
template_idvalue
ID of the template to create this function from.
inputs_schemaarray
Schema defining the configurable input parameters for this function.
execution_ordervalue
Execution priority for transformations. Lower values run first.
cdp-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 params

Update 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.

Parameters* required
ordersobject
Map of hog function UUIDs to their new execution_order values.
cdp-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 params

Get 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.

Parameters* required
idstring
A UUID string identifying this hog function.
change-request-getGet a specific change request by ID, including the full intent, policy snapshot, approval votes, and current state.1 params

Get a specific change request by ID, including the full intent, policy snapshot, approval votes, and current state.

Parameters* required
idstring
A UUID string identifying this change request.
change-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 params

List 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.

Parameters* required
limitnumber
Number of results to return per page.
statearray
Multiple values may be separated by commas.
offsetnumber
The initial index from which to return the results.
requesternumber
action_keystring
resource_idstring
resource_typestring
cohorts-add-persons-to-static-cohort-partial-updateAdd persons to a static cohort by their UUIDs. Only works for static cohorts (is_static: true).2 params

Add persons to a static cohort by their UUIDs. Only works for static cohorts (is_static: true).

Parameters* required
idnumber
A unique integer value identifying this cohort.
person_idsarray
List of person UUIDs to add to the cohort
cohorts-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 params

Create 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...

Parameters* required
namevalue
queryvalue
filtersvalue
is_staticboolean
cohort_typevalue
Type of cohort based on filter complexity * `static` - static * `person_property` - person_property * `behavioral` - behavioral * `realtime` - realtime * `analytical` - analytical
descriptionstring
cohorts-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 params

List 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...

Parameters* required
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
cohorts-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 params

Update an existing cohort's name, description, or filters. Changing filters on a dynamic cohort triggers recalculation. To soft-delete a cohort, set 'deleted: true'.

Parameters* required
idnumber
A unique integer value identifying this cohort.
namevalue
queryvalue
deletedboolean
filtersvalue
is_staticboolean
cohort_typevalue
Type of cohort based on filter complexity * `static` - static * `person_property` - person_property * `behavioral` - behavioral * `realtime` - realtime * `analytical` - analytical
descriptionstring
cohorts-retrieveGet a specific cohort by ID. Returns the cohort name, description, filters (for dynamic cohorts), count of matching users, and calculation status.1 params

Get a specific cohort by ID. Returns the cohort name, description, filters (for dynamic cohorts), count of matching users, and calculation status.

Parameters* required
idnumber
A unique integer value identifying this cohort.
cohorts-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 params

Remove 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.

Parameters* required
idnumber
A unique integer value identifying this cohort.
person_idstring
Person UUID to remove from the cohort
comment-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 params

Get a specific comment by ID including its content, rich content with mentions, and metadata.

Parameters* required
idstring
A UUID string identifying this comment.
comment-threadGet the full thread of replies for a parent comment. Useful for reading complete discussions on a resource.1 params

Get the full thread of replies for a parent comment. Useful for reading complete discussions on a resource.

Parameters* required
idstring
A UUID string identifying this comment.
comments-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 params

List 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.

Parameters* required
kindstring
Filter by comment kind. 'task' returns only items intentionally created as actionable. 'comment' excludes tasks. Defaults to 'any' (no filter). * `any` - any * `comment` - comment * `task` - taskone of any · comment · task
scopestring
Filter by resource type (e.g. Dashboard, FeatureFlag, Insight, Replay).
cursorstring
The pagination cursor value.
searchstring
Full-text search within comment content.
item_idstring
Filter by the ID of the resource being commented on.
completedstring
When kind=task, restrict to open (incomplete) or completed tasks. Ignored when kind is not 'task'. Defaults to 'any' (no filter). * `any` - any * `open` - open * `completed` - completedone of any · open · completed
source_commentstring
Filter replies to a specific parent comment.
conversations-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 params

List 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...

Parameters* required
slastring
Filter by SLA state. `breached` = past `sla_due_at`, `at-risk` = due within the next hour, `on-track` = more than an hour remaining.one of at-risk · breached · on-track
tagsstring
JSON-encoded array of tag names to filter by, e.g. `["billing","urgent"]`.
limitnumber
Number of results to return per page.
offsetnumber
The initial index from which to return the results.
searchstring
Free-text search. A numeric value matches a ticket number exactly; otherwise matches against the customer's name or email (case-insensitive, partial match).
statusstring
Filter by status. Accepts a single value or a comma-separated list (e.g. `new,open,pending`). Valid values: `new`, `open`, `pending`, `on_hold`, `resolved`.
date_tostring
Only include tickets updated on or before this date. Same format as `date_from`.
assigneestring
Filter by assignee. Use `unassigned` for tickets with no assignee, `user:<user_id>` for a specific user, or `role:<role_uuid>` for a role.
order_bystring
Sort order. Prefix with `-` for descending. Defaults to `-updated_at`.
prioritystring
Filter by priority. Accepts a single value or a comma-separated list (e.g. `medium,high`). Valid values: `low`, `medium`, `high`.
date_fromstring
Only include tickets updated on or after this date. Accepts absolute dates (`2026-01-01`) or relative ones (`-7d`, `-1mStart`). Pass `all` to disable the filter.
distinct_idsstring
Comma-separated list of person `distinct_id`s to filter by (max 100).
channel_detailstring
Filter by the channel sub-type (e.g. `widget_embedded`, `slack_bot_mention`).one of github_issue · slack_bot_mention · slack_channel_message · slack_emoji_reaction · teams_bot_mention · teams_channel_message
channel_sourcestring
Filter by the channel the ticket originated from.one of email · github · slack · teams · widget
conversations-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 params

Get 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.

Parameters* required
idstring
A UUID string identifying this ticket.
conversations-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 params

Update 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.

Parameters* required
idstring
A UUID string identifying this ticket.
tagsarray
statusstring
Ticket status: new, open, pending, on_hold, or resolved * `new` - New * `open` - Open * `pending` - Pending * `on_hold` - On hold * `resolved` - Resolvedone of new · open · pending · on_hold · resolved
priorityvalue
Ticket priority: low, medium, or high. Null if unset. * `low` - Low * `medium` - Medium * `high` - High
sla_due_atvalue
SLA deadline set via workflows. Null means no SLA.
snoozed_untilvalue
create-feature-flagCreate a feature flag in the current project.6 params

Create a feature flag in the current project.

Parameters* required
keystring
Feature flag key.
namestring
Feature flag description (stored in the `name` field for backwards compatibility).
tagsarray
Organizational tags for this feature flag.
activeboolean
Whether the feature flag is active.
filtersobject
Feature flag targeting configuration.
evaluation_contextsarray
Evaluation contexts that control where this flag evaluates at runtime.
Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
Put your SEO on autopilot
Put your SEO on autopilot
An agent that runs the SEO playbooks that move rankings and ships PRs you control.
Get founding access →
Vibe Prospecting MCPVibe Prospecting MCP
Vibe Prospecting MCP
Connect Claude to +800M contacts, +150M companies. Find & Enrich leads in chat.
Try For Free →
Categories
Monitoring & Observability
Registryactive
TransportHTTP, SSE
AuthRequired
UpdatedJan 7, 2026
View on GitHub

posthoglogo

GitHub contributors PRs Welcome Docker Pulls GitHub commit activity GitHub closed issues

Docs - Community - Roadmap - Why PostHog? - Changelog - Bug reports

PostHog Demonstration

PostHog is an all-in-one, open source platform for building successful products

PostHog provides every tool you need to build a successful product including:

  • Product Analytics: Autocapture or manually instrument event-based analytics to understand user behavior and analyze data with visualization or SQL.
  • Web Analytics: Monitor web traffic and user sessions with a GA-like dashboard. Easily monitor conversion, web vitals, and revenue.
  • Session Replays: Watch real user sessions of interactions with your website or mobile app to diagnose issues and understand user behavior.
  • Feature Flags: Safely roll out features to select users or cohorts with feature flags.
  • Experiments: Test changes and measure their statistical impact on goal metrics. Set up experiments with no-code too.
  • Error Tracking: Track errors, get alerts, and resolve issues to improve your product.
  • Surveys: Ask anything with our collection of no-code survey templates, or build custom surveys with our survey builder.
  • Data warehouse: Sync data from external tools like Stripe, Hubspot, your data warehouse, and more. Query it alongside your product data.
  • Data pipelines: Run custom filters and transformations on your incoming data. Send it to 25+ tools or any webhook in real time or batch export large amounts to your warehouse.
  • AI observability: Capture traces, generations, latency, and cost for your LLM-powered app.
  • Workflows: Create workflows that automate actions or send messages to your users.

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.

Table of Contents

  • PostHog is an all-in-one, open source platform for building successful products
  • Table of Contents
  • Getting started with PostHog
    • PostHog Cloud (Recommended)
    • Self-hosting the open-source hobby deploy (Advanced)
  • Setting up PostHog
  • Learning more about PostHog
  • Contributing
  • Open-source vs. paid
  • We’re hiring!

Getting started with PostHog

PostHog Cloud (Recommended)

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.

Self-hosting the open-source hobby deploy (Advanced)

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.

Setting up PostHog

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:

FrontendMobileBackend
JavaScriptReact NativePython
Next.jsAndroidNode
ReactiOSPHP
VueFlutterRuby

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.

Learning more about PostHog

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.

Contributing

We <3 contributions big and small:

  • Vote on features or get early access to beta functionality in our roadmap
  • Open a PR (see our instructions on developing PostHog locally)
  • Submit a feature request or bug report

For an overview of the codebase structure, see monorepo layout and products.

Open-source vs. paid

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.

We're hiring!

Hedgehog working on a Mission Control Center

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.

Related Monitoring & Observability MCP Servers

View all →
Mcp Observability

io.github.infoinlet-marketplace/mcp-observability

Observability for incident agents — query Loki (LogQL), Prometheus (PromQL), Elasticsearch.
Monitor

betterdb-inc/monitor

BetterDB MCP server - Valkey observability for Claude Code and other MCP clients
1.1k
Datadog

com.mcparmory/datadog

Monitor infrastructure, manage agents and deployments, track metrics, logs, and events
25
Observability Mcp

thotischner/observability-mcp

Unified observability gateway for AI agents — Prometheus, Loki & more, with anomaly detection.
5
Datadog Mcp

io.github.tantiope/datadog-mcp

Full Datadog API access: monitors, logs, metrics, traces, dashboards, and observability tools
4
Kibana Mcp

mshegolev/kibana-mcp

Kibana/Elasticsearch MCP — log search, aggregations, index discovery, dashboards.