---
title: "PostHog MCP server for AI agents - actionlake"
description: "Give Claude 583 PostHog actions through one MCP server: error tracking, organizations. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/posthog
updated: 2026-10-11
---

Connectors · Observability & analytics

# PostHog MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to PostHog and the rest of your systems. It gives your agent 583 PostHog actions (279 reads, 227 writes and 77 that wait for a confirmation) and holds the PostHog credential itself, so the agent never does. It paces PostHog's limits and records every call.

[Connect PostHog free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "posthog.persons.list",
  intent: "check which PostHog account is connected"
}
# List Persons · read · 1 upstream call
```

- 583 actions in one signed file
- 279 read look, never change
- 227 write create and update
- 77 wait for a yes destructive, confirmed first

Set up

## Connect PostHog in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect PostHog.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `token` PostHog personal API key (phx_...)
   - `host` Where your PostHog lives: your host
   - `project_id` Your PostHog project id
   ```
   account { op: "connections.requirements", service: "posthog" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "posthog.persons.list" }
   # list persons · read · 1 upstream call
   check { action: "posthog.groups.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

PostHog at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`token`

**Setup fields**

`host` `project_id`

**Limits we pace to**

240 calls a minute, per connection

**API covered**

PostHog API 1.0.0, at your PostHog instance's API base URL, which you enter when connecting

**Built from**

PostHog's documentation, read 18 September 2026[us.posthog.com](https://us.posthog.com/api/schema/?format=json)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

262 of 279 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

10 in the store

**Shared entities**

5, so ask can line PostHog up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in PostHog.

583 actions in 41 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **279** read look, never change
- **227** write create and update
- **77** destructive wait for a confirmation

1. ### Error tracking
   90
   42 read · 34 write · 14 destructive
   List Error Tracking Assignment Rules · List Error Tracking Bypass Rules · List Error Tracking Grouping Rules · List Error Tracking Severity Rules
2. ### Organizations
   89
   40 read · 35 write · 14 destructive
   List_for_organization Organizations Members · List_for_organization Organizations Roles · List Organizations · Update Organizations Members
3. ### Experiments
   37
   17 read · 19 write · 1 destructive
   Create Experiments · List Experiments · Create Experiments Create From Prompt · List Experiments Matching Ids
4. ### Dashboards
   26
   7 read · 15 write · 4 destructive
   List Dashboards · Create Dashboards · Create Dashboards Create From Template Json · Create Dashboards Create Unlisted Dashboard
5. ### Feature flags
   26
   14 read · 10 write · 2 destructive
   Create_for_feature_flag Feature Flags Dashboard · Create_for_feature_flag Feature Flags Create Static Cohort For Flag · Create_for_feature_flag Feature Flags Enrich Usage Dashboard · Create Feature Flags User Blast Radius
6. ### Insights
   25
   11 read · 10 write · 4 destructive
   List Insights · Create Insights Viewed · Create Insights · Get Insights
7. ### Surveys
   21
   12 read · 8 write · 1 destructive
   List Surveys · Create Surveys · List Surveys Question Labels · Get Surveys
8. ### Batch exports
   20
   9 read · 8 write · 3 destructive
   List Batch Exports · Create Batch Exports · List Batch Exports Test · Get Batch Exports

**33 more areas · 249 actions**

- Hog functions **20**
- Persons **19**
- Notebooks **15**
- Event definitions **13**
- File system **13**
- Cohorts **12**
- Comments **10**
- Groups types **10**
- Alerts **9**
- Query **9**
- Session recordings **9**
- Subscriptions **9**
- Groups **8**
- Session recording playlists **8**
- Actions **7**
- Dashboard templates **7**
- Elements **7**
- File system shortcut **6**
- Property definitions **6**
- Annotations **5**
- Early access feature **5**
- Experiment holdouts **5**
- Experiment saved metrics **5**
- Insight variables **5**
- Scheduled changes **5**
- Web experiments **5**
- Exports **4**
- Users **4**
- Events **3**
- Heatmaps **2**
- Sessions **2**
- Activity log **1**
- Plugin configs **1**

Top actions

## The PostHog API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 243 of PostHog's 264 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `posthog.organizations.members.list_for_organization` List_for_organization Organizations Members | List_for_organization Organizations Members | read | `identity.group_member.list` 103 connectors |
| `posthog.persons.list` List Persons | This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture… | read | `analytics.profile.list` 3 connectors |
| `posthog.groups.list` List Groups | List all groups of a specific group type. You must pass ?group_type_index= in the URL. To get a list of valid group types, call… | read | `analytics.profile.list` 3 connectors |
| `posthog.users.list` List Users | List Users | read | `identity.user.list` 474 connectors |
| `posthog.groups_types.list` List Groups Types | List Groups Types | read | `analytics.dataset.list` 28 connectors |
| `posthog.dashboards.list` List Dashboards | List Dashboards | read | `analytics.dashboard.list` 22 connectors |
| `posthog.dashboard_templates.list` List Dashboard Templates | List Dashboard Templates | read | `analytics.dashboard.list` 22 connectors |
| `posthog.groups.create` Create Groups | Create Groups | write | `analytics.profile.create` 2 connectors |
| `posthog.actions.list` List Actions | List Actions | read | `analytics.segment.list` 17 connectors |
| `posthog.elements.create` Create Elements | Create Elements | write | `analytics.tracked_event.create` 12 connectors |
| `posthog.experiments.create` Create Experiments | Create a new experiment in draft status with optional metrics. | write | `analytics.experiment.create` 12 connectors |
| `posthog.groups_types.delete` Delete Groups Types | Delete Groups Types | destructive | `analytics.dataset.delete` 23 connectors |

Try it

## Prompts to paste into Claude.

Each one names the PostHog actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Give me a one-line status for every active PostHog project.
   calls `posthog.organizations.projects.list_for_organization`
2. Plan write
   Backfill a batch export and watch it finish in PostHog.
   calls `posthog.batch_exports.pause.create_for_batch_export` `posthog.batch_exports.backfills.create_for_batch_export` `posthog.batch_exports.backfills.get` `posthog.batch_exports.unpause.create_for_batch_export` `posthog.batch_exports.logs.list_for_batch_export`
3. Plan destructive
   Invite a member and grant a role in PostHog. Ask me before anything is sent or changed.
   calls `posthog.organizations.invites.list_for_organization` `posthog.organizations.roles.get` `posthog.organizations.invites.create_for_organization` `posthog.organizations.roles.role_memberships.create_for_role` `posthog.organizations.members.scoped_api_keys.list_for_member`
4. Write write
   Create Groups in PostHog. Show me exactly what you will send before you save it.
   calls `posthog.groups.create`

The plan store

## Ready-made plans for PostHog.

10 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Audit who can see each dashboard
   Use it when Someone is running an access review and needs to know which PostHog dashboards are shared and with whom.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   project id
   **Install**
   `posthog-audit-dashboard-sharing`
2. ### Run a query and save the answer
   Use it when Someone wants an ad hoc PostHog query run and the result stored in a notebook instead of pasted into chat.
   **Effect**
   write
   **Steps**
   4
   **Needs**
   project id, query and title
   **Install**
   `posthog-run-hogql-query-to-notebook`
3. ### Build the weekly survey response report
   Use it when Someone asks for a weekly written summary of how the PostHog surveys performed over a date range.
   **Effect**
   write
   **Steps**
   4
   **Needs**
   project id, date from and date to
   **Install**
   `posthog-weekly-survey-report`
4. ### Backfill a batch export and watch it finish
   Use it when A batch export missed a window and needs a backfill run safely, with the export paused while it catches up.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   project id, batch export id, start at and end at
   **Install**
   `posthog-backfill-batch-export`
5. ### Triage open error tracking issues
   Use it when An on-call engineer wants the PostHog error tracking board triaged with a severity and status set on each open issue.
   **Effect**
   write
   **Steps**
   5 · loops
   **Needs**
   project id
   **Install**
   `posthog-triage-error-tracking-issues`
6. ### Verify and tag the live event definitions
   Use it when The analytics taxonomy needs its live events marked verified and tagged after an instrumentation change.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   project id and definition ids
   **Install**
   `posthog-verify-event-definitions`
7. ### Restore and publish a hog function revision
   Use it when A hog function needs rolling back to an earlier revision and someone must approve before it goes live.
   A person decides Restore hog function _hog function id_ to revision _version_ and publish it live.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   project id, hog function id and version
   **Install**
   `posthog-publish-hog-function-revision`
8. ### Retire stale feature flags after approval
   Use it when A team wants old feature flags cleaned out of PostHog but a human must sign off before anything is removed.
   A person decides Permanently delete _candidate count_ PostHog feature flags: _items, ', '_.
   **Effect**
   destructive
   **Steps**
   5
   **Needs**
   project id and flag ids
   **Install**
   `posthog-retire-stale-feature-flags`
9. ### Invite a member and grant a role
   Use it when A new teammate needs a PostHog organization invite plus a role, with someone signing off on the access level.
   A person decides Invite _target email_ to the organization and grant the role _name_.
   **Effect**
   destructive
   **Steps**
   6
   **Needs**
   organization id, target email, role id and user uuid
   **Install**
   `posthog-onboard-organization-member`
10. ### Purge session recordings after sign-off
    Use it when A retention or privacy request requires session recordings to be deleted, with explicit human sign-off first.
    A person decides Permanently delete _purge count_ session recordings from _date from_ onward. This cannot be undone.
    **Effect**
    destructive
    **Steps**
    6
    **Needs**
    project id, short id, session recording ids and date from
    **Install**
    `posthog-purge-session-recordings`

install a plan

```
account { op: "plans.install", slug: "posthog-audit-dashboard-sharing" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for PostHog

## Destructive actions wait for a yes.

77 PostHog actions are destructive. The first 10:

- Delete Groups Types `posthog.groups_types.delete`
- Delete Dashboards `posthog.dashboards.delete`
- Delete Dashboard Templates `posthog.dashboard_templates.delete`
- Delete Users `posthog.users.delete`
- Delete Organizations Members `posthog.organizations.members.delete`
- Create Persons Bulk Delete `posthog.persons.bulk_delete.create`
- Delete Actions `posthog.actions.delete`
- Delete Cohorts `posthog.cohorts.delete`
- Delete Experiments `posthog.experiments.delete`
- Delete Web Experiments `posthog.web_experiments.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do posthog.groups_types.delete confirm_policy: **human**

Delete Groups Types?

**intent:** the user asked me to delete Groups Types

run suspended · waiting for a named person · key _posthog-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "posthog-agent",
  allowed_actions: ["posthog.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "posthog.groups_types.delete", approver: "lead@example.com" },
    { match: "posthog.dashboards.delete", approver: "lead@example.com" },
    { match: "posthog.dashboard_templates.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to PostHog only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What PostHog costs on actionlake.

Every PostHog action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call PostHog refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 583 PostHog actions
- 583 actions page each page of a long list is one call
- 262 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every PostHog action.

583 actions by area: the id your agent calls, what it does, and its effect.

**Error tracking 90**

- `posthog.error_tracking.assignment_rules.list` List Error Tracking Assignment Rules read
- `posthog.error_tracking.bypass_rules.list` List Error Tracking Bypass Rules read
- `posthog.error_tracking.grouping_rules.list` List Error Tracking Grouping Rules read
- `posthog.error_tracking.severity_rules.list` List Error Tracking Severity Rules read
- `posthog.error_tracking.alerts.create` Create Error Tracking Alerts write
- `posthog.error_tracking.alerts.delete` Delete Error Tracking Alerts destructive
- and 84 more in this area

**Organizations 89**

- `posthog.organizations.list` List Organizations read
- `posthog.organizations.members.list_for_organization` List_for_organization Organizations Members read
- `posthog.organizations.members.update` Update Organizations Members write
- `posthog.organizations.roles.list_for_organization` List_for_organization Organizations Roles read
- `posthog.organizations.batch_exports.create_for_organization` Create_for_organization Organizations Batch Exports write
- `posthog.organizations.batch_exports.delete` Delete Organizations Batch Exports destructive
- and 83 more in this area

**Experiments 37**

- `posthog.experiments.create` Create Experiments write
- `posthog.experiments.create_from_prompt.create` Create Experiments Create From Prompt write
- `posthog.experiments.list` List Experiments read
- `posthog.experiments.matching_ids.list` List Experiments Matching Ids read
- `posthog.experiments.activity.list_for_experiment` List_for_experiment Experiments Activity read
- `posthog.experiments.archive.create_for_experiment` Create_for_experiment Experiments Archive write
- and 31 more in this area

**Dashboards 26**

- `posthog.dashboards.create` Create Dashboards write
- `posthog.dashboards.create_from_template_json.create` Create Dashboards Create From Template Json write
- `posthog.dashboards.create_unlisted_dashboard.create` Create Dashboards Create Unlisted Dashboard write
- `posthog.dashboards.list` List Dashboards read
- `posthog.dashboards.bulk_update_tags.create` Create Dashboards Bulk Update Tags write
- `posthog.dashboards.collaborators.create_for_dashboard` Create_for_dashboard Dashboards Collaborators write
- and 20 more in this area

**Feature flags 26**

- `posthog.feature_flags.create_static_cohort_for_flag.create_for_feature_flag` Create_for_feature_flag Feature Flags Create Static Cohort For Flag write
- `posthog.feature_flags.dashboard.create_for_feature_flag` Create_for_feature_flag Feature Flags Dashboard write
- `posthog.feature_flags.enrich_usage_dashboard.create_for_feature_flag` Create_for_feature_flag Feature Flags Enrich Usage Dashboard write
- `posthog.feature_flags.user_blast_radius.create` Create Feature Flags User Blast Radius read
- `posthog.feature_flags.activity.list` List Feature Flags Activity read
- `posthog.feature_flags.activity.list_for_feature_flag` List_for_feature_flag Feature Flags Activity read
- and 20 more in this area

**Insights 25**

- `posthog.insights.create` Create Insights write
- `posthog.insights.get` Get Insights read
- `posthog.insights.list` List Insights read
- `posthog.insights.viewed.create` Create Insights Viewed write
- `posthog.insights.activity.list` List Insights Activity read
- `posthog.insights.activity.list_for_insight` List_for_insight Insights Activity read
- and 19 more in this area

**Surveys 21**

- `posthog.surveys.create` Create Surveys write
- `posthog.surveys.get` Get Surveys read
- `posthog.surveys.list` List Surveys read
- `posthog.surveys.question_labels.list` List Surveys Question Labels read
- `posthog.surveys.activity.list` List Surveys Activity read
- `posthog.surveys.activity.list_for_survey` List_for_survey Surveys Activity read
- and 15 more in this area

**Batch exports 20**

- `posthog.batch_exports.create` Create Batch Exports write
- `posthog.batch_exports.get` Get Batch Exports read
- `posthog.batch_exports.list` List Batch Exports read
- `posthog.batch_exports.test.list` List Batch Exports Test read
- `posthog.batch_exports.backfills.cancel.create_for_backfill` Create_for_backfill Batch Exports Backfills Cancel destructive
- `posthog.batch_exports.backfills.create_for_batch_export` Create_for_batch_export Batch Exports Backfills write
- and 14 more in this area

**Hog functions 20**

- `posthog.hog_functions.create` Create Hog Functions write
- `posthog.hog_functions.icons.list` List Hog Functions Icons read
- `posthog.hog_functions.list` List Hog Functions read
- `posthog.hog_functions.masked_secrets.list` List Hog Functions Masked Secrets read
- `posthog.hog_functions.delete` Delete Hog Functions destructive
- `posthog.hog_functions.discard_draft.create_for_hog_function` Create_for_hog_function Hog Functions Discard Draft write
- and 14 more in this area

**Persons 19**

- `posthog.persons.batch_by_distinct_ids.create` Create Persons Batch By Distinct Ids read
- `posthog.persons.batch_by_uuids.create` Create Persons Batch By Uuids read
- `posthog.persons.get` Get Persons read
- `posthog.persons.list` List Persons read
- `posthog.persons.activity.list` List Persons Activity read
- `posthog.persons.activity.list_for_person` List_for_person Persons Activity read
- and 13 more in this area

**Notebooks 15**

- `posthog.notebooks.create` Create Notebooks write
- `posthog.notebooks.get` Get Notebooks read
- `posthog.notebooks.list` List Notebooks read
- `posthog.notebooks.update` Update Notebooks write
- `posthog.notebooks.activity.list` List Notebooks Activity read
- `posthog.notebooks.activity.list_for_notebook` List_for_notebook Notebooks Activity read
- and 9 more in this area

**Event definitions 13**

- `posthog.event_definitions.by_name.list` List Event Definitions By Name read
- `posthog.event_definitions.create` Create Event Definitions write
- `posthog.event_definitions.list` List Event Definitions read
- `posthog.event_definitions.update` Update Event Definitions write
- `posthog.event_definitions.bulk_update_tags.create` Create Event Definitions Bulk Update Tags write
- `posthog.event_definitions.bulk_update_verified.create` Create Event Definitions Bulk Update Verified write
- and 7 more in this area

**File system 13**

- `posthog.file_system.create` Create File System write
- `posthog.file_system.list` List File System read
- `posthog.file_system.log_view.create` Create File System Log View write
- `posthog.file_system.unfiled.list` List File System Unfiled read
- `posthog.file_system.count.query_for_file_system` Query_for_file_system File System Count read
- `posthog.file_system.count_by_path.query` Query File System Count By Path read
- and 7 more in this area

**Cohorts 12**

- `posthog.cohorts.create` Create Cohorts write
- `posthog.cohorts.get` Get Cohorts read
- `posthog.cohorts.list` List Cohorts read
- `posthog.cohorts.persons.list_for_cohort` List_for_cohort Cohorts Persons read
- `posthog.cohorts.activity.list` List Cohorts Activity read
- `posthog.cohorts.activity.list_for_cohort` List_for_cohort Cohorts Activity read
- and 6 more in this area

**Comments 10**

- `posthog.comments.send_to_slack.create_for_comment` Create_for_comment Comments Send To Slack write
- `posthog.comments.complete.create_for_comment` Create_for_comment Comments Complete write
- `posthog.comments.count.list` List Comments Count read
- `posthog.comments.create` Create Comments write
- `posthog.comments.delete` Delete Comments destructive
- `posthog.comments.get` Get Comments read
- and 4 more in this area

**Groups types 10**

- `posthog.groups_types.delete` Delete Groups Types destructive
- `posthog.groups_types.list` List Groups Types read
- `posthog.groups_types.metrics.create_for_groups_type` Create_for_groups_type Groups Types Metrics write
- `posthog.groups_types.metrics.list_for_groups_type` List_for_groups_type Groups Types Metrics read
- `posthog.groups_types.create_detail_dashboard.update` Update Groups Types Create Detail Dashboard write
- `posthog.groups_types.metrics.delete` Delete Groups Types Metrics destructive
- and 4 more in this area

**Alerts 9**

- `posthog.alerts.create` Create Alerts write
- `posthog.alerts.get` Get Alerts read
- `posthog.alerts.list` List Alerts read
- `posthog.alerts.update` Update Alerts write
- `posthog.alerts.delete` Delete Alerts destructive
- `posthog.alerts.destinations.create_for_alert` Create_for_alert Alerts Destinations write
- and 3 more in this area

**Query 9**

- `posthog.query.by_kind.query` Query Query By Kind read
- `posthog.query.check_auth_for_async.query` Query Query Check Auth For Async read
- `posthog.query.draft_sql.list` List Query Draft Sql read
- `posthog.query.query` Query Query read
- `posthog.query.delete` Delete Query destructive
- `posthog.query.get` Get Query read
- and 3 more in this area

**Session recordings 9**

- `posthog.session_recordings.delete` Delete Session Recordings destructive
- `posthog.session_recordings.get` Get Session Recordings read
- `posthog.session_recordings.list` List Session Recordings read
- `posthog.session_recordings.update` Update Session Recordings write
- `posthog.session_recordings.bulk_delete.create` Create Session Recordings Bulk Delete destructive
- `posthog.session_recordings.sharing.list_for_session_recording` List_for_session_recording Session Recordings Sharing read
- and 3 more in this area

**Subscriptions 9**

- `posthog.subscriptions.create` Create Subscriptions write
- `posthog.subscriptions.get` Get Subscriptions read
- `posthog.subscriptions.list` List Subscriptions read
- `posthog.subscriptions.update` Update Subscriptions write
- `posthog.subscriptions.delete` Delete Subscriptions destructive
- `posthog.subscriptions.deliveries.get` Get Subscriptions Deliveries read
- and 3 more in this area

**Groups 8**

- `posthog.groups.create` Create Groups write
- `posthog.groups.find.list` List Groups Find read
- `posthog.groups.list` List Groups read
- `posthog.groups.related.list` List Groups Related read
- `posthog.groups.activity.list` List Groups Activity read
- `posthog.groups.delete_property.create` Create Groups Delete Property destructive
- and 2 more in this area

**Session recording playlists 8**

- `posthog.session_recording_playlists.create` Create Session Recording Playlists write
- `posthog.session_recording_playlists.get` Get Session Recording Playlists read
- `posthog.session_recording_playlists.list` List Session Recording Playlists read
- `posthog.session_recording_playlists.update` Update Session Recording Playlists write
- `posthog.session_recording_playlists.delete` Delete Session Recording Playlists destructive
- `posthog.session_recording_playlists.recordings.create` Create Session Recording Playlists Recordings write
- and 2 more in this area

**Actions 7**

- `posthog.actions.create` Create Actions write
- `posthog.actions.get` Get Actions read
- `posthog.actions.list` List Actions read
- `posthog.actions.references.list_for_action` List_for_action Actions References read
- `posthog.actions.bulk_update_tags.create` Create Actions Bulk Update Tags write
- `posthog.actions.delete` Delete Actions destructive
- and 1 more in this area

**Dashboard templates 7**

- `posthog.dashboard_templates.create` Create Dashboard Templates write
- `posthog.dashboard_templates.get` Get Dashboard Templates read
- `posthog.dashboard_templates.list` List Dashboard Templates read
- `posthog.dashboard_templates.update` Update Dashboard Templates write
- `posthog.dashboard_templates.copy_between_projects.create` Create Dashboard Templates Copy Between Projects write
- `posthog.dashboard_templates.delete` Delete Dashboard Templates destructive
- and 1 more in this area

**Elements 7**

- `posthog.elements.create` Create Elements write
- `posthog.elements.get` Get Elements read
- `posthog.elements.list` List Elements read
- `posthog.elements.values.list` List Elements Values read
- `posthog.elements.delete` Delete Elements destructive
- `posthog.elements.stats.list` List Elements Stats read
- and 1 more in this area

**File system shortcut 6**

- `posthog.file_system_shortcut.create` Create File System Shortcut write
- `posthog.file_system_shortcut.get` Get File System Shortcut read
- `posthog.file_system_shortcut.list` List File System Shortcut read
- `posthog.file_system_shortcut.update` Update File System Shortcut write
- `posthog.file_system_shortcut.delete` Delete File System Shortcut destructive
- `posthog.file_system_shortcut.reorder.create` Create File System Shortcut Reorder write

**Property definitions 6**

- `posthog.property_definitions.get` Get Property Definitions read
- `posthog.property_definitions.list` List Property Definitions read
- `posthog.property_definitions.seen_together.list` List Property Definitions Seen Together read
- `posthog.property_definitions.update` Update Property Definitions write
- `posthog.property_definitions.bulk_update_tags.create` Create Property Definitions Bulk Update Tags write
- `posthog.property_definitions.delete` Delete Property Definitions destructive

**Annotations 5**

- `posthog.annotations.create` Create Annotations write
- `posthog.annotations.get` Get Annotations read
- `posthog.annotations.list` List Annotations read
- `posthog.annotations.update` Update Annotations write
- `posthog.annotations.delete` Delete Annotations destructive

**Early access feature 5**

- `posthog.early_access_feature.create` Create Early Access Feature write
- `posthog.early_access_feature.get` Get Early Access Feature read
- `posthog.early_access_feature.list` List Early Access Feature read
- `posthog.early_access_feature.update` Update Early Access Feature write
- `posthog.early_access_feature.delete` Delete Early Access Feature destructive

**Experiment holdouts 5**

- `posthog.experiment_holdouts.create` Create Experiment Holdouts write
- `posthog.experiment_holdouts.get` Get Experiment Holdouts read
- `posthog.experiment_holdouts.list` List Experiment Holdouts read
- `posthog.experiment_holdouts.update` Update Experiment Holdouts write
- `posthog.experiment_holdouts.delete` Delete Experiment Holdouts destructive

**Experiment saved metrics 5**

- `posthog.experiment_saved_metrics.create` Create Experiment Saved Metrics write
- `posthog.experiment_saved_metrics.get` Get Experiment Saved Metrics read
- `posthog.experiment_saved_metrics.list` List Experiment Saved Metrics read
- `posthog.experiment_saved_metrics.update` Update Experiment Saved Metrics write
- `posthog.experiment_saved_metrics.delete` Delete Experiment Saved Metrics destructive

**Insight variables 5**

- `posthog.insight_variables.create` Create Insight Variables write
- `posthog.insight_variables.get` Get Insight Variables read
- `posthog.insight_variables.list` List Insight Variables read
- `posthog.insight_variables.update` Update Insight Variables write
- `posthog.insight_variables.delete` Delete Insight Variables destructive

**Scheduled changes 5**

- `posthog.scheduled_changes.create` Create Scheduled Changes write
- `posthog.scheduled_changes.get` Get Scheduled Changes read
- `posthog.scheduled_changes.list` List Scheduled Changes read
- `posthog.scheduled_changes.update` Update Scheduled Changes write
- `posthog.scheduled_changes.delete` Delete Scheduled Changes destructive

**Web experiments 5**

- `posthog.web_experiments.create` Create Web Experiments write
- `posthog.web_experiments.get` Get Web Experiments read
- `posthog.web_experiments.list` List Web Experiments read
- `posthog.web_experiments.update` Update Web Experiments write
- `posthog.web_experiments.delete` Delete Web Experiments destructive

**Exports 4**

- `posthog.exports.content.list_for_export` List_for_export Exports Content read
- `posthog.exports.create` Create Exports write
- `posthog.exports.get` Get Exports read
- `posthog.exports.list` List Exports read

**Users 4**

- `posthog.users.delete` Delete Users destructive
- `posthog.users.get` Get Users read
- `posthog.users.list` List Users read
- `posthog.users.update` Update Users write

**Events 3**

- `posthog.events.get` Get Events read
- `posthog.events.list` List Events read
- `posthog.events.values.list` List Events Values read

**Heatmaps 2**

- `posthog.heatmaps.events.list` List Heatmaps Events read
- `posthog.heatmaps.list` List Heatmaps read

**Sessions 2**

- `posthog.sessions.property_definitions.list` List Sessions Property Definitions read
- `posthog.sessions.values.list` List Sessions Values read

**Activity log 1**

- `posthog.activity_log.list` List Activity Log read

**Plugin configs 1**

- `posthog.plugin_configs.logs.list_for_plugin_config` List_for_plugin_config Plugin Configs Logs read

This index shows a sample of each area. All 583 actions, with their inputs and prices, are in the [catalogue](https://actionlake.com/console/catalogue), which a free sandbox key can search.

Questions

## The PostHog MCP server, answered.

**Is there a PostHog MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 583 PostHog actions across error tracking, organizations, experiments and dashboards, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by PostHog.

**What do I need to connect PostHog?**

PostHog personal API key (phx_...). Plus your host and your project id. The free call account { op: "connections.requirements", service: "posthog" } lists exactly what to paste.

**Can an AI agent delete or change things in PostHog?**

Only if its key allows it, and only with an explicit confirmation. 77 PostHog actions are destructive, including delete Groups Types, delete Dashboards and delete Dashboard Templates. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my PostHog API limit?**

actionlake paces every call to the limits in the PostHog service file: 240 calls a minute per connection. Repeated reads are answered from cache (262 PostHog actions can be), which never reaches PostHog.

**What does a PostHog action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (583 PostHog actions page). Cache hits, searches, dry runs and calls PostHog refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which PostHog API does it cover?**

The PostHog API 1.0.0 at your PostHog instance's API base URL, which you enter when connecting. It is built from PostHog's documentation as read on 18 September 2026. 583 actions in 41 areas, each one in the signed service file (version 1.0.0).

**Does actionlake keep my PostHog data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your PostHog credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like PostHog

Shares the most action names with

- [Datadog 90](https://actionlake.com/connectors/datadog)
- [Grafana 62](https://actionlake.com/connectors/grafana)
- [Mixpanel 39](https://actionlake.com/connectors/mixpanel)
- [Microsoft Power BI 36](https://actionlake.com/connectors/microsoft-power-bi)
- [Metabase 33](https://actionlake.com/connectors/metabase)
- [Axiom 30](https://actionlake.com/connectors/axiom)

Joins with, on shared entities

- [Octopus Deploy 2](https://actionlake.com/connectors/octopus-deploy)
- [PlanetScale 2](https://actionlake.com/connectors/planetscale)
- [Upsun (Platform.sh) 2](https://actionlake.com/connectors/upsun-platform-sh)
- [Render 2](https://actionlake.com/connectors/render)
- [LlamaCloud 2](https://actionlake.com/connectors/llamacloud)
- [Netlify 2](https://actionlake.com/connectors/netlify)

Browse

- [All Observability & analytics connectors](https://actionlake.com/connectors/category/observability-and-analytics)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by PostHog; the name is the vendor's own. Counts are from the PostHog service file, version 1.0.0.

## Give your agent PostHog today.

[Connect PostHog free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/posthog
More: https://actionlake.com/llms.txt
