Context
loopover_plan_repo_issues is registered only as a remote MCP tool (src/mcp/server.ts:2637, implementation server.ts:4326-4364, calling generateIssuePlanDrafts from src/services/issue-plan-draft.ts). It shipped via Epic #7424 / Spec #7426 (both closed 2026-07-20) — after the "MCP Platform Wave 1" tool-parity milestone had already closed. As a result it never entered the systematic "REST + CLI mirror" pipeline that every other analytical/write MCP tool in this repo went through: it has no REST route (nothing in src/api/routes.ts calls generateIssuePlanDrafts), no CLI command (zero mentions in packages/loopover-mcp/bin/loopover-mcp.ts), and no local stdio MCP tool. It's the only tool of its class (repo-scoped, maintainer-gated via requireRepoManageAccess — same gate as generateContributorIssueDrafts, which does have all three surfaces) missing all three mirrors.
Requirements
⚠️ Required pattern — mirror loopover_generate_contributor_issue_drafts's three-surface shape exactly, since it uses the identical requireRepoManageAccess gate and is the closest existing analog. Read its REST route in src/api/routes.ts, its CLI command in packages/loopover-mcp/bin/loopover-mcp.ts, and its stdio-tool registration before starting — do not invent a different shape for any of the three surfaces.
- Add a REST route in
src/api/routes.ts that calls generateIssuePlanDrafts (src/services/issue-plan-draft.ts), gated by requireRepoManageAccess the same way loopover_generate_contributor_issue_drafts's route is.
- Add a CLI command to
packages/loopover-mcp/bin/loopover-mcp.ts that calls the new REST route, following the existing CLI-command pattern used by its sibling maintain-family commands.
- Add a
registerStdioTool block for loopover_plan_repo_issues in the same file, calling the new CLI logic — mirroring the pattern at packages/loopover-mcp/bin/loopover-mcp.ts:2533-2600.
- Do not change
generateIssuePlanDrafts itself or the remote tool's existing behavior — this issue is purely about adding the three missing mirror surfaces.
Deliverables
Test Coverage Requirements
src/api/routes.ts is under the top-level 99% patch coverage gate — the new route needs a regression test. packages/loopover-mcp — match whatever coverage convention its existing CLI-command/stdio-tool tests already use; confirm this package's own coverage.include scoping before assuming the src/** gate applies identically.
Expected Outcome
loopover_plan_repo_issues has full parity with every other analytical MCP tool in this repo: callable via remote MCP, local stdio MCP, CLI, and REST — not just remote MCP.
Links & Resources
Context
loopover_plan_repo_issuesis registered only as a remote MCP tool (src/mcp/server.ts:2637, implementationserver.ts:4326-4364, callinggenerateIssuePlanDraftsfromsrc/services/issue-plan-draft.ts). It shipped via Epic #7424 / Spec #7426 (both closed 2026-07-20) — after the "MCP Platform Wave 1" tool-parity milestone had already closed. As a result it never entered the systematic "REST + CLI mirror" pipeline that every other analytical/write MCP tool in this repo went through: it has no REST route (nothing insrc/api/routes.tscallsgenerateIssuePlanDrafts), no CLI command (zero mentions inpackages/loopover-mcp/bin/loopover-mcp.ts), and no local stdio MCP tool. It's the only tool of its class (repo-scoped, maintainer-gated viarequireRepoManageAccess— same gate asgenerateContributorIssueDrafts, which does have all three surfaces) missing all three mirrors.Requirements
src/api/routes.tsthat callsgenerateIssuePlanDrafts(src/services/issue-plan-draft.ts), gated byrequireRepoManageAccessthe same wayloopover_generate_contributor_issue_drafts's route is.packages/loopover-mcp/bin/loopover-mcp.tsthat calls the new REST route, following the existing CLI-command pattern used by its siblingmaintain-family commands.registerStdioToolblock forloopover_plan_repo_issuesin the same file, calling the new CLI logic — mirroring the pattern atpackages/loopover-mcp/bin/loopover-mcp.ts:2533-2600.generateIssuePlanDraftsitself or the remote tool's existing behavior — this issue is purely about adding the three missing mirror surfaces.Deliverables
src/api/routes.tsforgenerateIssuePlanDrafts, gated the same way asloopover_generate_contributor_issue_drafts's route.packages/loopover-mcp/bin/loopover-mcp.tscalling the new route.loopover_plan_repo_issuesregistered as a local stdio MCP tool, calling the new CLI logic.Test Coverage Requirements
src/api/routes.tsis under the top-level 99% patch coverage gate — the new route needs a regression test.packages/loopover-mcp— match whatever coverage convention its existing CLI-command/stdio-tool tests already use; confirm this package's owncoverage.includescoping before assuming thesrc/**gate applies identically.Expected Outcome
loopover_plan_repo_issueshas full parity with every other analytical MCP tool in this repo: callable via remote MCP, local stdio MCP, CLI, and REST — not just remote MCP.Links & Resources
src/mcp/server.ts:2637(remote tool registration),server.ts:4326-4364(implementation)src/services/issue-plan-draft.ts(generateIssuePlanDrafts)loopover_generate_contributor_issue_drafts's REST route, CLI command, and stdio-tool registration (the three-surface pattern to mirror — samerequireRepoManageAccessgate)