Context
GET /v1/repos/:owner/:repo/activation-preview (src/api/routes.ts:3002) returns the maintainer-activation demo — "here's what LoopOver would have surfaced" over a repo's recent PRs (buildMaintainerActivationPreview), deterministic and gated by requireRepoMaintainer — the same per-repo maintainer gate loopover_get_maintainer_noise uses. It has no remote MCP tool and no local stdio MCP tool, unlike its maintainer-noise sibling which has both.
Requirements
⚠️ Required pattern — mirror loopover_get_maintainer_noise's two-surface shape exactly (src/mcp/server.ts:1923-1930, stdio registration packages/loopover-mcp/bin/loopover-mcp.ts:1459-1467). No separate human CLI verb exists for that sibling either — do not add one here.
- Register
loopover_get_activation_preview as a remote MCP tool in src/mcp/server.ts, using ownerRepoShape as input, calling the existing REST route's underlying data path (getRepository + resolveRepositorySettings + listPullRequests → buildMaintainerActivationPreview, exactly as the route already assembles it).
- Add
loopover_get_activation_preview to MCP_TOOL_CATEGORIES as "maintainer".
- Register
loopover_get_activation_preview as a local stdio MCP tool in packages/loopover-mcp/bin/loopover-mcp.ts, calling GET ${repoBase}/activation-preview via apiGet.
- Do not add a new human-typable CLI verb — out of scope, matching
maintainer-noise.
- Do not change
buildMaintainerActivationPreview, the REST route, or its requireRepoMaintainer gate.
Deliverables
Test Coverage Requirements
src/mcp/server.ts and packages/loopover-mcp are both under this repo's 99%+ Codecov patch gate. Add a unit test for the new remote-tool registration mirroring the loopover_get_maintainer_noise test, and a stdio-tool test matching the existing sibling-tool convention (verify packages/loopover-mcp's own coverage.include scoping first).
Expected Outcome
loopover_get_activation_preview is reachable via remote MCP and local stdio MCP, matching its existing REST route — an MCP client can pull the maintainer-activation demo the same way it already can for maintainer-noise.
Links & Resources
src/api/routes.ts:3002 (existing REST route, requireRepoMaintainer-gated)
src/mcp/server.ts:1923-1930, packages/loopover-mcp/bin/loopover-mcp.ts:1459-1467 (the loopover_get_maintainer_noise pattern to mirror)
src/mcp/server.ts:1798-1890 (MCP_TOOL_CATEGORIES map)
Context
GET /v1/repos/:owner/:repo/activation-preview(src/api/routes.ts:3002) returns the maintainer-activation demo — "here's what LoopOver would have surfaced" over a repo's recent PRs (buildMaintainerActivationPreview), deterministic and gated byrequireRepoMaintainer— the same per-repo maintainer gateloopover_get_maintainer_noiseuses. It has no remote MCP tool and no local stdio MCP tool, unlike itsmaintainer-noisesibling which has both.Requirements
loopover_get_activation_previewas a remote MCP tool insrc/mcp/server.ts, usingownerRepoShapeas input, calling the existing REST route's underlying data path (getRepository+resolveRepositorySettings+listPullRequests→buildMaintainerActivationPreview, exactly as the route already assembles it).loopover_get_activation_previewtoMCP_TOOL_CATEGORIESas"maintainer".loopover_get_activation_previewas a local stdio MCP tool inpackages/loopover-mcp/bin/loopover-mcp.ts, callingGET ${repoBase}/activation-previewviaapiGet.maintainer-noise.buildMaintainerActivationPreview, the REST route, or itsrequireRepoMaintainergate.Deliverables
loopover_get_activation_previewregistered as a remote MCP tool insrc/mcp/server.ts, category"maintainer".loopover_get_activation_previewregistered as a local stdio MCP tool inpackages/loopover-mcp/bin/loopover-mcp.ts.Test Coverage Requirements
src/mcp/server.tsandpackages/loopover-mcpare both under this repo's 99%+ Codecov patch gate. Add a unit test for the new remote-tool registration mirroring theloopover_get_maintainer_noisetest, and a stdio-tool test matching the existing sibling-tool convention (verifypackages/loopover-mcp's owncoverage.includescoping first).Expected Outcome
loopover_get_activation_previewis reachable via remote MCP and local stdio MCP, matching its existing REST route — an MCP client can pull the maintainer-activation demo the same way it already can formaintainer-noise.Links & Resources
src/api/routes.ts:3002(existing REST route,requireRepoMaintainer-gated)src/mcp/server.ts:1923-1930,packages/loopover-mcp/bin/loopover-mcp.ts:1459-1467(theloopover_get_maintainer_noisepattern to mirror)src/mcp/server.ts:1798-1890(MCP_TOOL_CATEGORIESmap)