Skip to content
Development
Skill

/signals-scout-mcp-tool-calls

Signals scout for PostHog MCP tool calls. Watches `$mcp_tool_call` telemetry for tools that need improvement — broad-reach failure rates, retry hammering, slow or context-bloating responses — grouped by owning product category, each with a fix suggestion.

From plugin
ai-plugin
95180 skills1 agent3 commands3 hooks
+1

Claude Code

$ npx -y skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls --agent claude-code

SKILL.md

signals-scout-mcp-tool-calls.SKILL.md
name: signals-scout-mcp-tool-calls
scout-display-name: MCP tool calls
description: >
  Signals scout for PostHog MCP tool calls. Watches `$mcp_tool_call` telemetry for tools that
  need improvement — broad-reach failure rates, retry hammering, slow or context-bloating
  responses — grouped by owning product category, each with a fix suggestion.
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 and the dashboard recipe for the recorded metrics in
  references/metrics-dashboard.md (read both on demand); deep-dives into
  posthog:exploring-mcp-tool-quality and posthog:querying-posthog-data.
scout-structured-output-schema: references/structured-output.schema.json
allowed_tools:
  - emit_report
  - edit_report
metadata:
  owner_team: signals
  scope: mcp_analytics
scout-precheck-query: |
  SELECT event, count() AS events, max(timestamp) AS last_seen
  FROM events
  WHERE event = '$mcp_tool_call'
    AND timestamp > {now} - INTERVAL 7 DAY
  GROUP BY event

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. 6. **Over-calling** — agents call it in a much larger share of sessions than in the prior window, even when every call succeeds (lens 10).

**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 | Effective tool expression in [the query cookbook](references/queries.md) | grouping key (includes rejected calls to known targets) | | reach | `distinct_id`, `$session_id` | reject single-user noise; compute per-session struggle | | client | `properties.$mcp_client_name` | localize a client-specific break (most reliable harness field) |

**Tier 2 — sometimes present (enrichment; localizes the cause, gate on coverage):**

| Field

Read more
@posthog
Ships withai-plugin

Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.

95180 skills1 agent1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
95
Star history of PostHog/ai-plugin on GitHub, a chart by star-history.com

Other skills on ai-plugin.

analyzing-ai-citations

analyzing-ai-citations

Answer AI citation and answer engine optimization (AEO) questions in PostHog: whether AI answer engines (ChatGPT, Claude, and an…

@posthog@posthogInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about signals-scout-mcp-tool-calls.

Which coding agents can use signals-scout-mcp-tool-calls?
signals-scout-mcp-tool-calls installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.