Skip to content

feat(web-analytics): Add weekly web analytics summarization to MCP#55403

Merged
jordanm-posthog merged 11 commits intomasterfrom
jordanm-posthog/addDigestToMCP
Apr 21, 2026
Merged

feat(web-analytics): Add weekly web analytics summarization to MCP#55403
jordanm-posthog merged 11 commits intomasterfrom
jordanm-posthog/addDigestToMCP

Conversation

@jordanm-posthog
Copy link
Copy Markdown
Contributor

Problem

There is currently no good way to get Web Analytics data via MCP

Changes

Adds a new API that can be called via MCP to get data similar to the Weekly Web Analytics Digest
Screenshot 2026-04-20 at 5 19 51 PM

How did you test this code?

Locally

👉 Stay up-to-date with PostHog coding conventions for a smoother review.

Publish to changelog?

Docs update

@jordanm-posthog jordanm-posthog requested a review from a team April 20, 2026 22:20
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 20, 2026

Comments Outside Diff (2)

  1. products/web_analytics/backend/weekly_digest.py, line 27-34 (link)

    P1 Default "0s" for avg_session_duration.previous is incorrect when compare=False

    When an exception occurs during get_overview_for_team, the function returns _default_overview(), which has previous: "0s" for avg_session_duration. With the new compare=False path, callers can request no comparison, but an error fallback will still return "0s" (a concrete value) rather than None — implying a previous measurement exists when it doesn't. The serializer already declares previous as allow_null=True, so None is the correct sentinel.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: products/web_analytics/backend/weekly_digest.py
    Line: 27-34
    
    Comment:
    **Default `"0s"` for `avg_session_duration.previous` is incorrect when `compare=False`**
    
    When an exception occurs during `get_overview_for_team`, the function returns `_default_overview()`, which has `previous: "0s"` for `avg_session_duration`. With the new `compare=False` path, callers can request no comparison, but an error fallback will still return `"0s"` (a concrete value) rather than `None` — implying a previous measurement exists when it doesn't. The serializer already declares `previous` as `allow_null=True`, so `None` is the correct sentinel.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
  2. products/web_analytics/backend/weekly_digest.py, line 228 (link)

    P2 utm_medium=email for MCP/API traffic

    build_team_digest is now called by both the email worker and the new MCP API endpoint. Every MCP user who clicks through to the dashboard will be tagged as utm_medium=email in PostHog's own analytics, making it impossible to distinguish email-originated traffic from MCP-originated traffic.

    Consider passing the source/medium as a parameter or using a different UTM for the API context, e.g. utm_source=web_analytics_mcp&utm_medium=api.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: products/web_analytics/backend/weekly_digest.py
    Line: 228
    
    Comment:
    **`utm_medium=email` for MCP/API traffic**
    
    `build_team_digest` is now called by both the email worker and the new MCP API endpoint. Every MCP user who clicks through to the dashboard will be tagged as `utm_medium=email` in PostHog's own analytics, making it impossible to distinguish email-originated traffic from MCP-originated traffic.
    
    Consider passing the source/medium as a parameter or using a different UTM for the API context, e.g. `utm_source=web_analytics_mcp&utm_medium=api`.
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: products/web_analytics/backend/weekly_digest.py
Line: 27-34

Comment:
**Default `"0s"` for `avg_session_duration.previous` is incorrect when `compare=False`**

When an exception occurs during `get_overview_for_team`, the function returns `_default_overview()`, which has `previous: "0s"` for `avg_session_duration`. With the new `compare=False` path, callers can request no comparison, but an error fallback will still return `"0s"` (a concrete value) rather than `None` — implying a previous measurement exists when it doesn't. The serializer already declares `previous` as `allow_null=True`, so `None` is the correct sentinel.

```suggestion
    "avg_session_duration": {"current": "0s", "previous": None, "change": None},
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: products/web_analytics/backend/weekly_digest.py
Line: 228

Comment:
**`utm_medium=email` for MCP/API traffic**

`build_team_digest` is now called by both the email worker and the new MCP API endpoint. Every MCP user who clicks through to the dashboard will be tagged as `utm_medium=email` in PostHog's own analytics, making it impossible to distinguish email-originated traffic from MCP-originated traffic.

Consider passing the source/medium as a parameter or using a different UTM for the API context, e.g. `utm_source=web_analytics_mcp&utm_medium=api`.

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: services/mcp/src/generated/web_analytics/api.ts
Line: 33-36

Comment:
**Missing min/max constraints on `days`**

The backend enforces `min_value=1, max_value=90` on `days` (`_DigestQuerySerializer`), but the Zod schema only adds `.default(7)` with no `.min(1).max(90)`. An MCP client passing e.g. `days=0` or `days=200` will get a `400` from the API rather than a client-side validation error with a helpful message.

```suggestion
    days: zod
        .number()
        .min(1)
        .max(90)
        .default(webAnalyticsWeeklyDigestQueryDaysDefault)
        .describe('Lookback window in days (1–90). Defaults to 7.'),
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: products/web_analytics/backend/test/test_api.py
Line: 32-77

Comment:
**No parametrized tests for `days` / `compare` parameters**

The new `days` and `compare` query parameters are exercised nowhere in the test suite — only the default-parameter path is covered. Given the team's preference for parametrized tests, consider adding a test like:

```python
@pytest.mark.parametrize("days,compare", [(1, True), (30, False), (90, True)])
def test_custom_days_and_compare(self, days, compare):
    with freeze_time(QUERY_TIMESTAMP):
        response = self.client.get(
            f"/api/environments/{self.team.id}/web_analytics/weekly_digest/",
            {"days": days, "compare": compare},
        )
    assert response.status_code == status.HTTP_200_OK
```

Also worth adding a test for boundary-violation inputs (`days=0`, `days=91`) to confirm the 400 response.

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "Add weekly web analytics summarization t..." | Re-trigger Greptile

Comment on lines +33 to +36
days: zod
.number()
.default(webAnalyticsWeeklyDigestQueryDaysDefault)
.describe('Lookback window in days (1–90). Defaults to 7.'),
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Missing min/max constraints on days

The backend enforces min_value=1, max_value=90 on days (_DigestQuerySerializer), but the Zod schema only adds .default(7) with no .min(1).max(90). An MCP client passing e.g. days=0 or days=200 will get a 400 from the API rather than a client-side validation error with a helpful message.

Suggested change
days: zod
.number()
.default(webAnalyticsWeeklyDigestQueryDaysDefault)
.describe('Lookback window in days (1–90). Defaults to 7.'),
days: zod
.number()
.min(1)
.max(90)
.default(webAnalyticsWeeklyDigestQueryDaysDefault)
.describe('Lookback window in days (1–90). Defaults to 7.'),
Prompt To Fix With AI
This is a comment left during a code review.
Path: services/mcp/src/generated/web_analytics/api.ts
Line: 33-36

Comment:
**Missing min/max constraints on `days`**

The backend enforces `min_value=1, max_value=90` on `days` (`_DigestQuerySerializer`), but the Zod schema only adds `.default(7)` with no `.min(1).max(90)`. An MCP client passing e.g. `days=0` or `days=200` will get a `400` from the API rather than a client-side validation error with a helpful message.

```suggestion
    days: zod
        .number()
        .min(1)
        .max(90)
        .default(webAnalyticsWeeklyDigestQueryDaysDefault)
        .describe('Lookback window in days (1–90). Defaults to 7.'),
```

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines +32 to +77
def test_returns_digest_shape(self):
with freeze_time(QUERY_TIMESTAMP):
_create_person(team_id=self.team.pk, distinct_ids=["user_1"])
_create_pageview(self.team, distinct_id="user_1", url="https://example.com/", timestamp="2025-01-25")
flush_persons_and_events()

response = self.client.get(f"/api/environments/{self.team.id}/web_analytics/weekly_digest/")

assert response.status_code == status.HTTP_200_OK
data = response.json()
assert set(data.keys()) == {
"visitors",
"pageviews",
"sessions",
"bounce_rate",
"avg_session_duration",
"top_pages",
"top_sources",
"goals",
"dashboard_url",
}
assert set(data["visitors"].keys()) == {"current", "previous", "change"}
assert isinstance(data["top_pages"], list)
assert isinstance(data["top_sources"], list)
assert isinstance(data["goals"], list)
assert "/web" in data["dashboard_url"]

def test_empty_team_returns_zero_metrics(self):
with freeze_time(QUERY_TIMESTAMP):
response = self.client.get(f"/api/environments/{self.team.id}/web_analytics/weekly_digest/")

assert response.status_code == status.HTTP_200_OK
data = response.json()
assert data["visitors"]["current"] == 0
assert data["pageviews"]["current"] == 0
assert data["top_pages"] == []
assert data["top_sources"] == []
assert data["goals"] == []

def test_cannot_read_other_teams_digest(self):
other_org = Organization.objects.create(name="Other Org")
other_team = Team.objects.create(organization=other_org, name="Other Team")

response = self.client.get(f"/api/environments/{other_team.id}/web_analytics/weekly_digest/")

assert response.status_code in (status.HTTP_403_FORBIDDEN, status.HTTP_404_NOT_FOUND)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 No parametrized tests for days / compare parameters

The new days and compare query parameters are exercised nowhere in the test suite — only the default-parameter path is covered. Given the team's preference for parametrized tests, consider adding a test like:

@pytest.mark.parametrize("days,compare", [(1, True), (30, False), (90, True)])
def test_custom_days_and_compare(self, days, compare):
    with freeze_time(QUERY_TIMESTAMP):
        response = self.client.get(
            f"/api/environments/{self.team.id}/web_analytics/weekly_digest/",
            {"days": days, "compare": compare},
        )
    assert response.status_code == status.HTTP_200_OK

Also worth adding a test for boundary-violation inputs (days=0, days=91) to confirm the 400 response.

Prompt To Fix With AI
This is a comment left during a code review.
Path: products/web_analytics/backend/test/test_api.py
Line: 32-77

Comment:
**No parametrized tests for `days` / `compare` parameters**

The new `days` and `compare` query parameters are exercised nowhere in the test suite — only the default-parameter path is covered. Given the team's preference for parametrized tests, consider adding a test like:

```python
@pytest.mark.parametrize("days,compare", [(1, True), (30, False), (90, True)])
def test_custom_days_and_compare(self, days, compare):
    with freeze_time(QUERY_TIMESTAMP):
        response = self.client.get(
            f"/api/environments/{self.team.id}/web_analytics/weekly_digest/",
            {"days": days, "compare": compare},
        )
    assert response.status_code == status.HTTP_200_OK
```

Also worth adding a test for boundary-violation inputs (`days=0`, `days=91`) to confirm the 400 response.

How can I resolve this? If you propose a fix, please make it concise.

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Copy link
Copy Markdown
Member

@lricoy lricoy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My only nit is that is not quite a weekly digest and more of a configurable web analytics summary

Great reaction!

Copy link
Copy Markdown
Member

@VojtechBartos VojtechBartos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great 👍 could you please also make sure it's covered with the integrations tests? Thanks!

@github-actions
Copy link
Copy Markdown
Contributor

MCP UI Apps size report

App JS CSS
debug 290.8 KB 23.8 KB
action 275.5 KB 23.8 KB
action-list 281.6 KB 23.8 KB
cohort 274.6 KB 23.8 KB
cohort-list 280.6 KB 23.8 KB
error-details 283.5 KB 23.8 KB
error-issue 275.2 KB 23.8 KB
error-issue-list 281.5 KB 23.8 KB
experiment 278.9 KB 23.8 KB
experiment-list 282.4 KB 23.8 KB
experiment-results 278.5 KB 23.8 KB
feature-flag 279.4 KB 23.8 KB
feature-flag-list 286.0 KB 23.8 KB
llm-costs 280.3 KB 23.8 KB
survey 276.2 KB 23.8 KB
survey-global-stats 277.8 KB 23.8 KB
survey-list 282.3 KB 23.8 KB
survey-stats 277.8 KB 23.8 KB
workflow 275.0 KB 23.8 KB
workflow-list 281.0 KB 23.8 KB
query-results 289.1 KB 23.8 KB

@tests-posthog
Copy link
Copy Markdown
Contributor

tests-posthog Bot commented Apr 21, 2026

Query snapshots: Backend query snapshots updated

Changes: 1 snapshots (0 modified, 1 added, 0 deleted)

What this means:

  • Query snapshots have been automatically updated to match current output
  • These changes reflect modifications to database queries or schema

Next steps:

  • Review the query changes to ensure they're intentional
  • If unexpected, investigate what caused the query to change

Review snapshot changes →

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 21, 2026

Size Change: 0 B

Total Size: 129 MB

ℹ️ View Unchanged
Filename Size
frontend/dist/368Hedgehogs 5.26 kB
frontend/dist/abap 14.2 kB
frontend/dist/AccountSocialConnected 2.17 kB
frontend/dist/Action 23.9 kB
frontend/dist/Actions 1.02 kB
frontend/dist/AdvancedActivityLogsScene 35.6 kB
frontend/dist/AgenticAuthorize 5.25 kB
frontend/dist/apex 3.95 kB
frontend/dist/ApprovalDetail 16.2 kB
frontend/dist/array.full.es5.js 333 kB
frontend/dist/array.full.js 427 kB
frontend/dist/array.js 183 kB
frontend/dist/AsyncMigrations 13.1 kB
frontend/dist/AuthorizationStatus 716 B
frontend/dist/azcli 846 B
frontend/dist/bat 1.84 kB
frontend/dist/BatchExportScene 60.5 kB
frontend/dist/bicep 2.55 kB
frontend/dist/Billing 493 B
frontend/dist/BillingSection 20.8 kB
frontend/dist/BoxPlot 5.04 kB
frontend/dist/browserAll-0QZMN1W2 37.4 kB
frontend/dist/ButtonPrimitives 562 B
frontend/dist/CalendarHeatMap 4.79 kB
frontend/dist/cameligo 2.18 kB
frontend/dist/changeRequestsLogic 544 B
frontend/dist/CLIAuthorize 11.3 kB
frontend/dist/CLILive 3.97 kB
frontend/dist/clojure 9.64 kB
frontend/dist/coffee 3.59 kB
frontend/dist/Cohort 24.8 kB
frontend/dist/CohortCalculationHistory 6.22 kB
frontend/dist/Cohorts 9.39 kB
frontend/dist/ConfirmOrganization 4.48 kB
frontend/dist/conversations.js 65.8 kB
frontend/dist/Coupons 720 B
frontend/dist/cpp 5.3 kB
frontend/dist/Create 829 B
frontend/dist/crisp-chat-integration.js 1.88 kB
frontend/dist/csharp 4.52 kB
frontend/dist/csp 1.42 kB
frontend/dist/css 4.51 kB
frontend/dist/cssMode 4.15 kB
frontend/dist/CustomCssScene 3.55 kB
frontend/dist/CustomerAnalyticsConfigurationScene 2.06 kB
frontend/dist/CustomerAnalyticsScene 26.5 kB
frontend/dist/CustomerJourneyBuilderScene 1.83 kB
frontend/dist/CustomerJourneyTemplatesScene 7.51 kB
frontend/dist/customizations.full.js 17.9 kB
frontend/dist/CyclotronJobInputAssignee 1.32 kB
frontend/dist/CyclotronJobInputBusinessHours 2.71 kB
frontend/dist/CyclotronJobInputTicketTags 711 B
frontend/dist/cypher 3.38 kB
frontend/dist/dart 4.25 kB
frontend/dist/Dashboard 1.11 kB
frontend/dist/Dashboards 24.1 kB
frontend/dist/DataManagementScene 646 B
frontend/dist/DataPipelinesNewScene 2.32 kB
frontend/dist/DataWarehouseScene 1.21 kB
frontend/dist/Deactivated 1.13 kB
frontend/dist/dead-clicks-autocapture.js 13.1 kB
frontend/dist/DeadLetterQueue 5.38 kB
frontend/dist/DebugScene 20 kB
frontend/dist/decompressionWorker 2.85 kB
frontend/dist/decompressionWorker.js 2.85 kB
frontend/dist/DefinitionEdit 7.11 kB
frontend/dist/DefinitionView 22.7 kB
frontend/dist/DestinationsScene 2.71 kB
frontend/dist/dist 575 B
frontend/dist/dockerfile 1.87 kB
frontend/dist/EarlyAccessFeature 753 B
frontend/dist/EarlyAccessFeatures 2.84 kB
frontend/dist/ecl 5.33 kB
frontend/dist/EditorScene 891 B
frontend/dist/elixir 10.3 kB
frontend/dist/elk.bundled 1.44 MB
frontend/dist/EmailMFAVerify 2.98 kB
frontend/dist/EndpointScene 37.5 kB
frontend/dist/EndpointsScene 22.1 kB
frontend/dist/ErrorTrackingIssueFingerprintsScene 6.98 kB
frontend/dist/ErrorTrackingIssueScene 95.6 kB
frontend/dist/ErrorTrackingScene 22.6 kB
frontend/dist/EvaluationTemplates 575 B
frontend/dist/EventsScene 2.57 kB
frontend/dist/exception-autocapture.js 11.8 kB
frontend/dist/Experiment 217 kB
frontend/dist/Experiments 18.2 kB
frontend/dist/exporter 20.9 MB
frontend/dist/exporter.js 20.9 MB
frontend/dist/ExportsScene 3.98 kB
frontend/dist/FeatureFlag 128 kB
frontend/dist/FeatureFlags 606 B
frontend/dist/FeatureFlagTemplatesScene 7.03 kB
frontend/dist/FlappyHog 5.78 kB
frontend/dist/flow9 1.8 kB
frontend/dist/freemarker2 16.7 kB
frontend/dist/fsharp 2.98 kB
frontend/dist/go 2.65 kB
frontend/dist/graphql 2.26 kB
frontend/dist/Group 14.4 kB
frontend/dist/Groups 3.91 kB
frontend/dist/GroupsNew 7.34 kB
frontend/dist/handlebars 7.34 kB
frontend/dist/hcl 3.59 kB
frontend/dist/HealthCategoryDetailScene 7.23 kB
frontend/dist/HealthScene 10.6 kB
frontend/dist/HeatmapNewScene 4.16 kB
frontend/dist/HeatmapRecordingScene 3.92 kB
frontend/dist/HeatmapScene 5.88 kB
frontend/dist/HeatmapsScene 3.88 kB
frontend/dist/hls 394 kB
frontend/dist/HogFunctionScene 59.3 kB
frontend/dist/HogRepl 7.37 kB
frontend/dist/html 5.58 kB
frontend/dist/htmlMode 4.62 kB
frontend/dist/image-blob-reduce.esm 49.4 kB
frontend/dist/InboxScene 59.8 kB
frontend/dist/index 305 kB
frontend/dist/index.js 305 kB
frontend/dist/ini 1.1 kB
frontend/dist/InsightQuickStart 5.42 kB
frontend/dist/InsightScene 28.9 kB
frontend/dist/IntegrationsRedirect 733 B
frontend/dist/intercom-integration.js 1.93 kB
frontend/dist/InviteSignup 14.4 kB
frontend/dist/java 3.22 kB
frontend/dist/javascript 985 B
frontend/dist/jsonMode 13.9 kB
frontend/dist/julia 7.22 kB
frontend/dist/kotlin 3.4 kB
frontend/dist/lazy 158 kB
frontend/dist/LegacyPluginScene 26.6 kB
frontend/dist/LemonTextAreaMarkdown 502 B
frontend/dist/less 3.9 kB
frontend/dist/lexon 2.44 kB
frontend/dist/lib 2.22 kB
frontend/dist/Link 468 B
frontend/dist/LinkScene 24.8 kB
frontend/dist/LinksScene 4.19 kB
frontend/dist/liquid 4.53 kB
frontend/dist/LiveDebugger 19.1 kB
frontend/dist/LiveEventsTable 3.22 kB
frontend/dist/LLMAnalyticsClusterScene 15.7 kB
frontend/dist/LLMAnalyticsClustersScene 43.1 kB
frontend/dist/LLMAnalyticsDatasetScene 19.7 kB
frontend/dist/LLMAnalyticsDatasetsScene 3.28 kB
frontend/dist/LLMAnalyticsEvaluation 59.4 kB
frontend/dist/LLMAnalyticsEvaluationsScene 29.8 kB
frontend/dist/LLMAnalyticsPlaygroundScene 36.3 kB
frontend/dist/LLMAnalyticsScene 118 kB
frontend/dist/LLMAnalyticsSessionScene 13.4 kB
frontend/dist/LLMAnalyticsTraceScene 129 kB
frontend/dist/LLMAnalyticsUsers 526 B
frontend/dist/LLMASessionFeedbackDisplay 4.83 kB
frontend/dist/LLMPromptScene 17.5 kB
frontend/dist/LLMPromptsScene 4.47 kB
frontend/dist/LLMSkillScene 589 B
frontend/dist/LLMSkillsScene 606 B
frontend/dist/Login 8.57 kB
frontend/dist/Login2FA 4.2 kB
frontend/dist/logs.js 38.5 kB
frontend/dist/LogsScene 11.4 kB
frontend/dist/lua 2.11 kB
frontend/dist/m3 2.81 kB
frontend/dist/main 819 kB
frontend/dist/ManagedMigration 14.1 kB
frontend/dist/markdown 3.79 kB
frontend/dist/MarketingAnalyticsScene 39.7 kB
frontend/dist/MaterializedColumns 10.2 kB
frontend/dist/Max 801 B
frontend/dist/mdx 5.39 kB
frontend/dist/memlens.lib.bundle 27.8 kB
frontend/dist/MessageTemplate 16.3 kB
frontend/dist/MetricsScene 828 B
frontend/dist/mips 2.58 kB
frontend/dist/ModelsScene 13.6 kB
frontend/dist/MonacoDiffEditor 403 B
frontend/dist/monacoEditorWorker 288 kB
frontend/dist/monacoEditorWorker.js 288 kB
frontend/dist/monacoJsonWorker 419 kB
frontend/dist/monacoJsonWorker.js 419 kB
frontend/dist/monacoTsWorker 7.02 MB
frontend/dist/monacoTsWorker.js 7.02 MB
frontend/dist/MoveToPostHogCloud 4.46 kB
frontend/dist/msdax 4.91 kB
frontend/dist/mysql 11.3 kB
frontend/dist/NavTabChat 4.68 kB
frontend/dist/NewSourceScene 783 B
frontend/dist/NewTabScene 647 B
frontend/dist/NodeDetailScene 16.3 kB
frontend/dist/NotebookCanvasScene 3.16 kB
frontend/dist/NotebookPanel 5.14 kB
frontend/dist/NotebookScene 8.17 kB
frontend/dist/NotebooksScene 7.58 kB
frontend/dist/OAuthAuthorize 573 B
frontend/dist/objective-c 2.41 kB
frontend/dist/Onboarding 734 kB
frontend/dist/OnboardingCouponRedemption 1.2 kB
frontend/dist/pascal 2.99 kB
frontend/dist/pascaligo 2 kB
frontend/dist/passkeyLogic 484 B
frontend/dist/PasswordReset 4.32 kB
frontend/dist/PasswordResetComplete 2.94 kB
frontend/dist/PendingDeletion 2.21 kB
frontend/dist/perl 8.25 kB
frontend/dist/PersonScene 16 kB
frontend/dist/PersonsScene 4.68 kB
frontend/dist/pgsql 13.5 kB
frontend/dist/php 8.02 kB
frontend/dist/PipelineStatusScene 9.1 kB
frontend/dist/pla 1.67 kB
frontend/dist/posthog 144 kB
frontend/dist/postiats 7.86 kB
frontend/dist/powerquery 16.9 kB
frontend/dist/powershell 3.27 kB
frontend/dist/PreflightCheck 5.53 kB
frontend/dist/product-tours.js 115 kB
frontend/dist/ProductTour 273 kB
frontend/dist/ProductTours 4.68 kB
frontend/dist/ProjectHomepage 40.8 kB
frontend/dist/protobuf 9.05 kB
frontend/dist/pug 4.82 kB
frontend/dist/python 4.76 kB
frontend/dist/qsharp 3.19 kB
frontend/dist/QueryPerformance 6.99 kB
frontend/dist/r 3.12 kB
frontend/dist/razor 9.35 kB
frontend/dist/recorder-v2.js 111 kB
frontend/dist/recorder.js 111 kB
frontend/dist/redis 3.55 kB
frontend/dist/redshift 11.8 kB
frontend/dist/RegionMap 29.4 kB
frontend/dist/render-query 20.6 MB
frontend/dist/render-query.js 20.6 MB
frontend/dist/ResourceTransfer 9.17 kB
frontend/dist/restructuredtext 3.9 kB
frontend/dist/RevenueAnalyticsScene 25.6 kB
frontend/dist/ruby 8.5 kB
frontend/dist/rust 4.16 kB
frontend/dist/SavedInsights 664 B
frontend/dist/sb 1.82 kB
frontend/dist/scala 7.32 kB
frontend/dist/scheme 1.76 kB
frontend/dist/scss 6.41 kB
frontend/dist/SdkDoctorScene 9.4 kB
frontend/dist/SessionAttributionExplorerScene 6.62 kB
frontend/dist/SessionGroupSummariesTable 4.62 kB
frontend/dist/SessionGroupSummaryScene 17 kB
frontend/dist/SessionProfileScene 15 kB
frontend/dist/SessionRecordingDetail 1.75 kB
frontend/dist/SessionRecordingFilePlaybackScene 4.46 kB
frontend/dist/SessionRecordings 742 B
frontend/dist/SessionRecordingsKiosk 8.84 kB
frontend/dist/SessionRecordingsPlaylistScene 4.14 kB
frontend/dist/SessionRecordingsSettingsScene 1.9 kB
frontend/dist/SessionsScene 3.98 kB
frontend/dist/SettingsScene 2.98 kB
frontend/dist/SharedMetric 4.83 kB
frontend/dist/SharedMetrics 549 B
frontend/dist/shell 3.07 kB
frontend/dist/SignupContainer 25.7 kB
frontend/dist/Site 1.18 kB
frontend/dist/solidity 18.6 kB
frontend/dist/sophia 2.76 kB
frontend/dist/SourceScene 758 B
frontend/dist/SourcesScene 6.08 kB
frontend/dist/sparql 2.55 kB
frontend/dist/sql 10.3 kB
frontend/dist/SqlVariableEditScene 7.24 kB
frontend/dist/st 7.4 kB
frontend/dist/StartupProgram 21.2 kB
frontend/dist/SubscriptionScene 12.8 kB
frontend/dist/SubscriptionsScene 4.89 kB
frontend/dist/SupportSettingsScene 1.16 kB
frontend/dist/SupportTicketScene 24.6 kB
frontend/dist/SupportTicketsScene 733 B
frontend/dist/Survey 848 B
frontend/dist/SurveyFormBuilder 1.54 kB
frontend/dist/Surveys 18.2 kB
frontend/dist/surveys.js 90 kB
frontend/dist/SurveyWizard 64.3 kB
frontend/dist/swift 5.26 kB
frontend/dist/SystemStatus 16.8 kB
frontend/dist/systemverilog 7.61 kB
frontend/dist/TaskDetailScene 21.5 kB
frontend/dist/TaskTracker 13.2 kB
frontend/dist/tcl 3.57 kB
frontend/dist/TextCardMarkdownEditor 11 kB
frontend/dist/toolbar 10.6 MB
frontend/dist/toolbar.js 10.6 MB
frontend/dist/ToolbarLaunch 2.52 kB
frontend/dist/tracing-headers.js 1.74 kB
frontend/dist/TracingScene 29.8 kB
frontend/dist/TransformationsScene 1.95 kB
frontend/dist/tsMode 24 kB
frontend/dist/twig 5.97 kB
frontend/dist/TwoFactorReset 3.98 kB
frontend/dist/typescript 240 B
frontend/dist/typespec 2.82 kB
frontend/dist/Unsubscribe 1.62 kB
frontend/dist/UserInterview 4.53 kB
frontend/dist/UserInterviews 2.01 kB
frontend/dist/vb 5.79 kB
frontend/dist/VercelConnect 4.95 kB
frontend/dist/VercelLinkError 1.91 kB
frontend/dist/VerifyEmail 4.48 kB
frontend/dist/vimMode 211 kB
frontend/dist/VisualReviewRunScene 26.7 kB
frontend/dist/VisualReviewRunsScene 6.12 kB
frontend/dist/VisualReviewSettingsScene 10.8 kB
frontend/dist/web-vitals.js 6.39 kB
frontend/dist/WebAnalyticsScene 5.77 kB
frontend/dist/WebGLRenderer-DYjOwNoG 60.3 kB
frontend/dist/WebGPURenderer-B_wkl_Ja 36.3 kB
frontend/dist/WebScriptsScene 2.57 kB
frontend/dist/webworkerAll-puPV1rBA 324 B
frontend/dist/wgsl 7.34 kB
frontend/dist/Wizard 4.45 kB
frontend/dist/WorkflowScene 101 kB
frontend/dist/WorkflowsScene 58.3 kB
frontend/dist/WorldMap 4.73 kB
frontend/dist/xml 2.98 kB
frontend/dist/yaml 4.6 kB

compressed-size-action

@jordanm-posthog jordanm-posthog enabled auto-merge (squash) April 21, 2026 19:46
@jordanm-posthog jordanm-posthog merged commit 893364b into master Apr 21, 2026
286 of 291 checks passed
@jordanm-posthog jordanm-posthog deleted the jordanm-posthog/addDigestToMCP branch April 21, 2026 20:21
@deployment-status-posthog
Copy link
Copy Markdown

deployment-status-posthog Bot commented Apr 21, 2026

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-04-21 20:50 UTC Run
prod-us ✅ Deployed 2026-04-21 21:01 UTC Run
prod-eu ✅ Deployed 2026-04-21 21:01 UTC Run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants