Repository navigation
Conversation
posthog-python Compliance ReportDate: 2026-10-23T13:49:17.825352+00:00 ✅ All Tests Passed!121/121 tests passed Capture_V1 Tests✅ 95/95 tests passed View Details
Capture_Ai Tests✅ 5/5 tests passed View Details
Feature_Flags Tests✅ 17/17 tests passed View Details
Feature_Flags_Local_Evaluation Tests✅ 4/4 tests passed View Details
|
MCPAnalyticsOptions(capture_tools_list=False) stops $mcp_tools_list. The option is on by default. Clients list tools on every reconnect, so the listing event is about as common as $mcp_tool_call. With the option off, record_tools_list returns early, which also drops a failed listing's $exception. Nothing else changes: tools keep their injected arguments, and the virtual tools stay listed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
d6ecc1a to
65e9ae3
Compare
|
@PostHog review |
|
@gesh PostHog Review is reviewing this pull request. |
There was a problem hiding this comment.
Not approved — this change needs a human reviewer.
Re-adding the stamphog label gives the same result unless the changed files change.
Stamphog can't approve this pull request automatically. The deny-list gate refused it because posthog/mcp/types.py and references/public_api_snapshot.txt change the public API by adding the capture_tools_list option to MCPAnalyticsOptions. The tier gate also classified the change as T2-never (cross-cutting feature, 85 lines across 6 files), which is never eligible for automated approval. The size gate passed, so splitting the pull request won't change this outcome. Please ask a human reviewer to look at it, ideally one who owns the MCP public API.
- posthog[bot] reviewed the current head.
Gate mechanics and policy version
| Gate | Result | |
|---|---|---|
| prerequisites | ✓ | all clear |
| deny-list | ✗ | matches: public_api |
| size | ✓ | 6L, 2F substantive, 85L/6F incl. docs/generated/snapshots — within ceiling |
| tier | ✗ | classified as T2-never: T2-never (85L, 6F, cross-cutting, feat) |
| stamphog 2.6.1 | .stamphog/policy.yml @ unknown · reviewed head 65e9ae3 |
💡 Motivation and Context
$mcp_tools_listis about as common as$mcp_tool_call.Stacked on #1115 (the same option for
$mcp_initialize). Merge that one first. Part of one change across three repos: PostHog/posthog-js#5404 and PostHog/sdk-specs#142.Changes
MCPAnalyticsOptions(capture_tools_list=False). It is on by default, so nothing changes unless a host sets it.record_tools_listreturns early. It is the only place that sends the event, so a failed listing's$exceptiongoes too.minorchangeset.💚 How did you test it?
test_capture_tools_list_controls_only_the_listing_eventruns with the option on and off over HTTP. It covers the SDK high-level server, standalone fastmcp, and a low-levelServer, on both SDK majors. A listing sends one or no$mcp_tools_list. The listed schema still has the injectedcontext, and the tool call still records its intent.test_capture_tools_list_off_also_drops_a_failed_listingchecks that a failed listing sends no event and no$exception(SDK 1.x).📝 Checklist
If releasing new changes
sampo addto generate a changeset file🤖 Agent context
Autonomy: Human-driven (agent-assisted)
claude-opus-5-5).tools/listwrapper still injects arguments, because tool calls depend on them.🤖 Generated with Claude Code