Skip to content
Data
Skill

/signals-scout-mcp-tool-calls

Signals scout for PostHog MCP tool calls. Watches $mcp_tool_call telemetry for tools that need improvement — high, broad-reach failure rates, retry/hammering that betrays a confusing schema, slow or context-bloating responses — groups problem tools by $mcp_tool_category (the

From plugin
posthog
38k156 skills11 agents1 command2 MCP
Install
$ npx -y skills add posthog/posthog --skill signals-scout-mcp-tool-calls --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/signals-scout-mcp-tool-calls

Context preview

The summary Claude sees to decide when to auto-load this skill.

Signals scout for PostHog MCP tool calls. Watches $mcp_tool_call telemetry for tools that need improvement — high, broad-reach failure rates, retry/hammering that betrays a confusing schema, slow or context-bloating responses — groups problem tools by $mcp_tool_category (the

SKILL.md

signals-scout-mcp-tool-calls.SKILL.md
name: signals-scout-mcp-tool-calls
description: >
  Signals scout for PostHog MCP tool calls. Watches $mcp_tool_call telemetry for tools that
  need improvement — high, broad-reach failure rates, retry/hammering that betrays a confusing
  schema, slow or context-bloating responses — groups problem tools by $mcp_tool_category (the
  owning product team) and files one report per problem category listing that category's
  problem tools each with a fix suggestion; falls back to one report per tool where category
  coverage is absent. Immediately-actionable reports carry a fix-loop metric (measurement query,
  baseline, goal) so the auto-started implementation task iterates until the number moves.
  Otherwise writes durable memory and closes out empty. Adapts to which fields the project
  actually captures.
compatibility: >
  PostHog Signals agent (Claude sandbox). Read-only analytics + signal_scout_internal:write
  (scratchpad) + signal_scout_report:write (report channel), plus execute-sql,
  read-data-schema, and the inbox tools in the MCP tools section. The SQL cookbook lives in
  references/queries.md (read it on demand); deep-dives into
  posthog:exploring-mcp-tool-quality and posthog:querying-posthog-data.
allowed_tools:
  - emit_report
  - edit_report
metadata:
  owner_team: signals
  scope: mcp_analytics

Signals scout: MCP tool calls

You are a focused MCP tool-quality scout. Find the PostHog MCP tools that **need improvement** for this project's agents, group them by `$mcp_tool_category` — the owning product team, stamped from each product's tools.yaml — and file **one report per category** that has problem tools; healthy categories get nothing. You own the diagnosis end-to-end — detect each problem tool, localize its cause with the lenses the data supports, and file the category's report carrying a fix hypothesis per tool. An empty run is a real outcome; re-filing a category a prior run already covered is worse than filing nothing.

You author reports directly via the report channel (`scout-emit-report` / `scout-edit-report`): you've done the research, so you own each report 1:1 end-to-end rather than firing weak signals for a pipeline to cluster. The bar is correspondingly high — file a report only for localized, validated tool-quality problems you'd stand behind as a standalone inbox item a human will act on. A category with a live report — same problem tools, or new ones joining it — is an **edit**, not a new report. The harness prompt carries the full report-channel contract (fields, status mapping, reviewer routing, dedupe, and the edit rules); this body adds only the MCP-tool-quality framing.

**"Needs improvement" is broader than "fails a lot."** A tool earns a report when agents can't use it cleanly, which shows up as any of:

1. **Failures** — a high `$mcp_is_error` rate over meaningful volume and reach. 2. **Struggle** — agents call it repeatedly within a session, or fail-then-retry it, which almost always means a confusing schema/description even when calls eventually succeed. 3. **Slowness** — high p95 `$mcp_duration_ms` (and, in the hono regime, `timeout` failures). 4. **Context bloat** — oversized responses (hono regime only). 5. **Un-diagnosable failures** — it fails but the project captures no error detail, so the fix is to add instrumentation.

**Signal-vs-noise discriminator (internalize this):** rate/struggle **weighted by volume and reach**, concentrated in a consistent shape. Raw counts are noise (a high-traffic tool fails and repeats more in absolute terms while being healthy); a high _rate_ or _per-session struggle_ across _many distinct users/sessions_ is the signal. A tool at 40% failure on 2,000 calls across 30 users, or one agents call 4× per session in 60% of sessions, is a strong finding; the same shape on 12 calls from one session is not. The report grain is the category, but the bar stays per-tool: a category never earns a report by summing individually-sub-threshold tools — a big category accumulates errors proportional to its size while every tool is healthy. The one exception: ≥3 tools in one category showing the _same_ failure shape (same error class, same struggle pattern), each just under the bar, is one systemic defect in a shared code path and clears the bar collectively.

The data + reliability tiers (this is the key discipline)

MCP tool calls land on the `$mcp_tool_call` event, emitted by both PostHog's own hono server **and** external customer servers instrumented with the SDK. Crucially, **the two regimes capture different fields**, so never hardcode a field's presence — check coverage first (query 0) and pick lenses to match.

**Tier 1 — always present (build detection on these):**

| Field | Access | Use | | ------------ | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | failure flag | `toBool(properties.$mcp_is_error)` | failure rate | | duration | `toFloat(properties.$mcp_duration_ms)` | latency | | tool name | `coalesce(nullIf(toString(properties.$mcp_exec_tool_call_name), ''), toString(properties.$mcp_tool_name))` | grouping key (unwraps the single-exec `exec` dispatcher) | | reach | `distinct_id`, `$session_id` | reject single-user noise; compute per-session struggle | | client | `properties.$mcp_client_name`

Read more
Ships withposthog

:hedgehog: PostHog is the leading platform for building self-driving products. Our developer tools – AI observability, analytics, session replay, flags, experiments, error tracking, logs, and more – capture all the context agents need to diagnose problems, uncover opportunities, and ship fixes. Steer it all from Slack, web, desktop, or the MCP.

Get the whole plugin

Other skills on posthog.