/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.
Claude Code
$ npx -y skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls --agent claude-code
Codex
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a codex -y
Cursor
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a cursor -y
Gemini CLI
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a gemini-cli -y
GitHub Copilot
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a github-copilot -y
OpenCode
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a opencode -y
Windsurf
$ npx skills add PostHog/ai-plugin --skill signals-scout-mcp-tool-calls -a windsurf -y
SKILL.md
signals-scout-mcp-tool-calls.SKILL.mdname: 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 eventSignals 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
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 eventSignals 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
Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.
Other skills on ai-plugin.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
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.

