Skip to content

chore(signals): drop signals prefix from scout MCP tool names - #71019

Merged
andrewm4894 merged 15 commits into
masterfrom
claude/scouts-mcp-tool-names-wmpz3t
Jul 15, 2026
Merged

chore(signals): drop signals prefix from scout MCP tool names#71019
andrewm4894 merged 15 commits into
masterfrom
claude/scouts-mcp-tool-names-wmpz3t

Conversation

@andrewm4894

Copy link
Copy Markdown
Member

Problem

Scouts is the primary term for the feature, but the scout MCP tools were all named signals-scout-*, which is redundant and eats into the 52-char tool name budget. Shorter names are also easier for agents to read and reference.

Changes

Renames all 23 scout MCP tools from signals-scout-* to scout-*, e.g.

-signals-scout-runs-list
+scout-runs-list
-signals-scout-emit-signal
+scout-emit-signal
-signals-scout-config-update
+scout-config-update

What changed:

  • products/signals/mcp/tools.yaml: tool keys renamed (the four disabled signals-reports-* / signals-report-artefacts-diff entries are report tools outside the scouts surface, so they keep their names and were just re-sorted).
  • Prose references to the tool names updated everywhere they appear: the scout harness prompt (scout_harness/prompt.py), serializer help texts/docstrings, viewset/route comments, the signals-scout-* fleet skills, the authoring-scouts / exploring-scouts meta skills, and the signals/review_hog architecture docs.
  • Generated artifacts regenerated: MCP tool definitions and handlers, services/mcp schema JSONs, and the signals frontend generated types. Tool schema snapshot files renamed via the snapshot test.

Note

Only the MCP tool names change. The signals-scout-* skill names (the scout fleet), API routes (/signals/scout/...), OpenAPI operation ids, scopes (signal_scout:*), and Temporal workflow ids are all untouched. There is no aliasing for the old tool names, but the scout harness prompt, skills, and tool list all come from the same deploy, so scheduled scout runs pick up the new names atomically. A team's hand-authored custom scout whose skill body mentions an old tool name in prose will still see the correct new names in its tool list.

How did you test this code?

Automated, all run locally:

  • services/mcp vitest unit suite (2081 tests) including the tool schema snapshot test (snapshots renamed, stale ones removed) and the tool cross-reference lint, plus lint-tool-names and tsgo typecheck.
  • products/signals/backend/test/test_scout_harness.py and test_scout_harness_tools.py (134 passed) - covers the renamed tool names in the generated prompt.
  • products/posthog_ai/scripts/test/test_build_skills.py (63 passed) and a full build_skills.py run to validate skill/tool reference integrity.
  • hogli ci:preflight --fix green after merging latest master.

No new tests: this is a rename, existing tests assert the new names.

Automatic notifications

  • Publish to changelog?
  • Alert Sales and Marketing teams?

Docs update

No docs/ pages reference the old tool names (verified by repo-wide sweep).

🤖 Agent context

Autonomy: Human-driven (agent-assisted)

  • Authored with Claude Code (session linked in commit trailer). Skills invoked: /implementing-mcp-tools, /setup-web-tests.
  • The rename deliberately matches only the tool-name namespace (signals-scout-{config,runs,emit,edit,members,metadata,project-profile,run-now,scratchpad}...) so the identically-prefixed signals-scout-* skill fleet names stay untouched.
  • Chose singular scout-* (the literal result of dropping the signals- prefix) over scouts-*; happy to flip if the plural is preferred.
  • Regenerated MCP/OpenAPI artifacts from a locally generated schema; unrelated formatting-only churn in other products' generated files was discarded, keeping the generated diff scoped to the rename.

🤖 Generated with Claude Code

https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs


Generated by Claude Code

claude added 2 commits July 15, 2026 10:34
Scouts is the primary term for the feature, so the MCP tools move from
`signals-scout-*` to `scout-*` (e.g. `signals-scout-runs-list` →
`scout-runs-list`). Skill names (`signals-scout-*` fleet) and API
routes/operation ids are unchanged; prose references in the harness
prompt, serializers, skills, and docs are updated, and generated MCP/
frontend artifacts regenerated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🤖 CI report

Bundle size — no change

Uncompressed size of every built .js bundle, compared against the base branch.

Total: 64.80 MiB · no change

No file changed by more than 1000 B.

Posted automatically by build-bundle-size-report · uncompressed bytes from dist-report

Eager graph — within budget

How much code each root ships on the eager path — downloaded and parsed before the surface is interactive. Measured from the esbuild output chunks (post-tree-shake, static imports only); lazy import() / React.lazy chunks are not counted.

Root Eager (shipped) Δ vs base Budget
entry (logged-out pages, app bootstrap)
src/index.tsx
1.22 MiB · 22 files no change ███░░░░░░░ 28.4% of 4.29 MiB
authenticated shell (every logged-in page)
src/scenes/AuthenticatedShell.tsx
8.15 MiB · 2,979 files no change █████████░ 88.1% of 9.25 MiB

🟢 node_modules/monaco-editor/ stays out of src/index.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 [object Object] stays out of src/index.tsx
🟢 node_modules/monaco-editor/ stays out of src/scenes/AuthenticatedShell.tsx
🟢 src/lib/components/ActivityLog/describers stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx
🟢 [object Object] stays out of src/scenes/AuthenticatedShell.tsx

Largest files eagerly shipped from src/index.tsx
Size File
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
24.6 KiB ../node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js
6.3 KiB ../node_modules/.pnpm/react@18.3.1/node_modules/react/cjs/react.production.min.js
4.5 KiB ../node_modules/.pnpm/@jspm+core@2.1.0/node_modules/@jspm/core/nodelibs/browser/process.js
3.9 KiB ../node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/cjs/scheduler.production.min.js
1.4 KiB ../node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js
1.3 KiB src/RootErrorBoundary.tsx
912 B ../node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js
789 B src/scenes/ChunkLoadErrorBoundary.tsx
762 B src/index.tsx
Largest files eagerly shipped from src/scenes/AuthenticatedShell.tsx
Size File
281.1 KiB ../node_modules/.pnpm/posthog-js@1.401.0/node_modules/posthog-js/dist/rrweb.js
267.7 KiB ../node_modules/.pnpm/@posthog+icons@0.38.0_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@posthog/icons/dist/posthog-icons.es.js
235.5 KiB src/taxonomy/core-filter-definitions-by-group.json
222.7 KiB ../node_modules/.pnpm/posthog-js@1.401.0/node_modules/posthog-js/dist/module.js
164.0 KiB src/queries/validators.js
154.3 KiB ../node_modules/.pnpm/re2js@0.4.1/node_modules/re2js/build/index.esm.js
126.8 KiB ../node_modules/.pnpm/react-dom@18.3.1_react@18.3.1/node_modules/react-dom/cjs/react-dom.production.min.js
106.1 KiB src/lib/api.ts
93.3 KiB ../node_modules/.pnpm/prosemirror-view@1.40.1/node_modules/prosemirror-view/dist/index.js
92.7 KiB ../packages/quill/packages/quill/dist/index.js

Posted automatically by check-eager-graph · sizes are eager output bytes (shipped, post-tree-shake) from the esbuild metafile · part of #32479

Dist folder size — 🟢 -32 B (-0.0%)

Total size of the built frontend/dist folder (all assets), compared against the base branch.

Total: 1308.72 MiB · 🟢 -32 B (-0.0%)

ℹ️ MCP UI apps size — 31 app(s), 16561.5 KB JS

Built size of each MCP UI app (main.js + styles.css).

App JS CSS
debug 598.2 KB 179.2 KB
action 456.5 KB 179.2 KB
action-list 563.0 KB 179.2 KB
cohort 455.4 KB 179.2 KB
cohort-list 562.0 KB 179.2 KB
email-template 455.3 KB 179.2 KB
error-details 471.1 KB 179.2 KB
error-issue 456.1 KB 179.2 KB
error-issue-list 562.9 KB 179.2 KB
experiment 560.1 KB 179.2 KB
experiment-list 563.8 KB 179.2 KB
experiment-results 561.8 KB 179.2 KB
feature-flag 565.8 KB 179.2 KB
feature-flag-list 569.5 KB 179.2 KB
feature-flag-testing 459.4 KB 179.2 KB
insight-actors 560.8 KB 179.2 KB
invite-email-preview 454.7 KB 179.2 KB
llm-costs 558.1 KB 179.2 KB
session-recording 457.2 KB 179.2 KB
session-summary 462.5 KB 179.2 KB
survey 457.0 KB 179.2 KB
survey-global-stats 560.9 KB 179.2 KB
survey-list 563.7 KB 179.2 KB
survey-stats 560.8 KB 179.2 KB
trace-span 455.8 KB 179.2 KB
trace-span-list 562.9 KB 179.2 KB
workflow 455.8 KB 179.2 KB
workflow-list 562.4 KB 179.2 KB
query-results 743.7 KB 179.2 KB
render-ui 824.0 KB 179.2 KB
visual-review-snapshots 460.3 KB 179.2 KB
⚠️ Playwright — 1 failed

🎭 Playwright report · View test results →

1 failed test:

  • password-protected insight sharing (chromium)

These issues are not necessarily caused by your changes.
Annoyed by this section? Help fix flakies and failures and it will go green!

@trunk-io

trunk-io Bot commented Jul 15, 2026

Copy link
Copy Markdown

Static BadgeStatic BadgeStatic BadgeStatic Badge

View Full Report ↗︎Docs

@github-actions

github-actions Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

🦔 Hogbox preview · ✅ ready

▶ Open the preview

🔑 Login test@posthog.com / 12345678 (demo data)
🧩 Running this PR's backend and frontend, on the PostHog :master base
🔗 Link stable across rebuilds — a re-push swaps the box underneath, the URL stays
🔒 Access tailnet only (PostHog VPN)
🛠️ Admin inspect & debug state in hogland
💤 Idle sleeps after ~30 min idle (snapshot to S3, zero node cost) and wakes on your next visit in ~30s, behind a brief "waking up" screen

commit ba616ae · box box-0c1bbb2c3a13 · ready in 769s (push → usable) · build log · rebuilds on every push, torn down on close

@pr-assigner-resolver-posthog
pr-assigner-resolver-posthog Bot requested review from a team July 15, 2026 11:01
@greptile-apps

greptile-apps Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Reviews (1): Last reviewed commit: "chore: update OpenAPI generated types" | Re-trigger Greptile

Comment thread products/signals/mcp/tools.yaml
@webjunkie
webjunkie removed the request for review from a team July 15, 2026 11:05
chatgpt-codex-connector[bot]

This comment was marked as outdated.

claude added 2 commits July 15, 2026 11:20
…ut tools

Persisted custom scout skills (and any external MCP caller) authored against
the old signals-scout-* names would hit tool-not-found after the rename.
Follow the llma-skill-* -> skill-* precedent: each old name forwards to the
renamed handler and annotates the response with a deprecation notice, to be
removed once callers have migrated.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
chatgpt-codex-connector[bot]

This comment was marked as outdated.

The Django/Temporal workers and the MCP service deploy as separate images,
so a scout run can briefly see the new prompt while the old MCP catalog
still serves signals-scout-* names. One prompt line tells the agent to
search the catalog and use whichever name it returns, covering the window
in both directions together with the deprecated aliases.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
@github-actions
github-actions Bot requested a deployment to preview-pr-71019 July 15, 2026 11:40 In progress
chatgpt-codex-connector[bot]

This comment was marked as outdated.

@github-actions
github-actions Bot requested a deployment to preview-pr-71019 July 15, 2026 12:06 In progress
claude added 2 commits July 15, 2026 12:11
…ctions

The interrupt feature and the inline MakeLogicType migration crossed on
master, leaving the checked-in inline type block missing isInterrupting /
interruptRun / setIsInterrupting — kea typegen's git-diff check fails on
any branch containing both. Regenerated with kea-typegen 3.8.2 + oxfmt,
matching the CI job.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
The published skills.zip and the MCP image deploy independently, so the
authoring-scouts / exploring-scouts skills can name scout-* tools before
the MCP catalog serves them. Mirror the harness prompt's fallback guidance
so a reader searches the catalog and uses whichever name it returns.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
chatgpt-codex-connector[bot]

This comment was marked as outdated.

…nitions

The tasks permission broker resolves read-only auto-allow from
services/mcp/schema/generated-tool-definitions.json only, so hand-rolled
aliases (curated tool-definitions.json + a TOOL_MAP forwarder) were
invisible to it and legacy read-only calls in task runs would fail closed.
Define the aliases as yaml entries instead — same operations, deprecated
titles/descriptions — so they flow through codegen into the artifact the
broker reads, and drop the hand-rolled forwarders.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
@posthog

posthog Bot commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

👋 Visual changes detected for this PR.

Review and approve in PostHog Visual Review

If these changes are unexpected, they may be caused by a flaky test or a broken snapshot on master. Don't approve — rerun the job or wait for a fix.

@github-actions
github-actions Bot requested a deployment to preview-pr-71019 July 15, 2026 12:29 In progress

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 78202b5a21

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread products/signals/mcp/tools.yaml Outdated
…scription

The description pointed at a scout-scratchpad-list tool that never
existed — the scratchpad read tool is scout-scratchpad-search.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qvqtaUVV8VSdWVEJ4j2Rs
@andrewm4894
andrewm4894 enabled auto-merge (squash) July 15, 2026 13:34
@andrewm4894
andrewm4894 merged commit 9f81157 into master Jul 15, 2026
250 checks passed
@andrewm4894
andrewm4894 deleted the claude/scouts-mcp-tool-names-wmpz3t branch July 15, 2026 13:57
@deployment-status-posthog

deployment-status-posthog Bot commented Jul 15, 2026

Copy link
Copy Markdown

Deploy status

Environment Status Deployed At Workflow
dev ✅ Deployed 2026-07-15 14:33 UTC Run
prod-us ✅ Deployed 2026-07-15 15:01 UTC Run
prod-eu ✅ Deployed 2026-07-15 15: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