Context
GET /v1/repos/:owner/:repo/pulls/:number/maintainer-packet (src/api/routes.ts:3329) builds a PR's full maintainer packet (buildPullRequestMaintainerPacket, wrapped in attachDataQuality) from the same data bundle (repo, pullRequest, issues, pullRequests, files, reviews, checks, recentMergedPullRequests) the adjacent reviewability route assembles. It's gated by requireStaticProtectedApiToken — the literal first line of the handler is identical to GET .../pulls/:number/reviewability's first line. loopover_get_pr_reviewability has a full remote MCP tool + local stdio tool; maintainer-packet — despite sharing the same auth gate, the same param shape (owner/repo/number), and most of the same data dependencies — has neither.
Requirements
⚠️ Required pattern — mirror loopover_get_pr_reviewability's two-surface shape and input schema exactly (src/mcp/server.ts:2350-2358, ownerRepoPullShape input, stdio registration packages/loopover-mcp/bin/loopover-mcp.ts:1427-1434). No separate human CLI verb exists for reviewability either — do not add one here.
- Register
loopover_get_pr_maintainer_packet as a remote MCP tool in src/mcp/server.ts, input ownerRepoPullShape, calling the same data-assembly path the REST route already uses (getRepository, getPullRequest, listIssues, listPullRequests, listPullRequestFiles, listPullRequestReviews, listCheckSummaries, listRecentMergedPullRequests → buildPullRequestMaintainerPacket → attachDataQuality).
- Add
loopover_get_pr_maintainer_packet to MCP_TOOL_CATEGORIES as "review" (the category loopover_get_pr_reviewability uses).
- Register
loopover_get_pr_maintainer_packet as a local stdio MCP tool in packages/loopover-mcp/bin/loopover-mcp.ts, calling GET ${prefix}/pulls/${number}/maintainer-packet via apiGet.
- Do not add a new human-typable CLI verb.
- Do not change
buildPullRequestMaintainerPacket, attachDataQuality, the REST route, or its auth gate.
Deliverables
Test Coverage Requirements
src/mcp/server.ts and packages/loopover-mcp are both under the 99%+ Codecov patch gate. Add a unit test for the new remote-tool registration mirroring loopover_get_pr_reviewability's test, and a stdio-tool test matching the existing sibling-tool convention. Verify packages/loopover-mcp's own coverage.include scoping before assuming the src/** gate applies identically.
Expected Outcome
loopover_get_pr_maintainer_packet is reachable via remote MCP and local stdio MCP with the same auth boundary its REST route already enforces, giving parity with its reviewability sibling.
Links & Resources
src/api/routes.ts:3329 (existing REST route, requireStaticProtectedApiToken-gated, identical first line to the reviewability route at src/api/routes.ts:3353)
src/mcp/server.ts:2350-2358, packages/loopover-mcp/bin/loopover-mcp.ts:1427-1434 (the loopover_get_pr_reviewability pattern to mirror)
src/mcp/server.ts:1798-1890 (MCP_TOOL_CATEGORIES map)
Context
GET /v1/repos/:owner/:repo/pulls/:number/maintainer-packet(src/api/routes.ts:3329) builds a PR's full maintainer packet (buildPullRequestMaintainerPacket, wrapped inattachDataQuality) from the same data bundle (repo,pullRequest,issues,pullRequests,files,reviews,checks,recentMergedPullRequests) the adjacentreviewabilityroute assembles. It's gated byrequireStaticProtectedApiToken— the literal first line of the handler is identical toGET .../pulls/:number/reviewability's first line.loopover_get_pr_reviewabilityhas a full remote MCP tool + local stdio tool;maintainer-packet— despite sharing the same auth gate, the same param shape (owner/repo/number), and most of the same data dependencies — has neither.Requirements
loopover_get_pr_maintainer_packetas a remote MCP tool insrc/mcp/server.ts, inputownerRepoPullShape, calling the same data-assembly path the REST route already uses (getRepository,getPullRequest,listIssues,listPullRequests,listPullRequestFiles,listPullRequestReviews,listCheckSummaries,listRecentMergedPullRequests→buildPullRequestMaintainerPacket→attachDataQuality).loopover_get_pr_maintainer_packettoMCP_TOOL_CATEGORIESas"review"(the categoryloopover_get_pr_reviewabilityuses).loopover_get_pr_maintainer_packetas a local stdio MCP tool inpackages/loopover-mcp/bin/loopover-mcp.ts, callingGET ${prefix}/pulls/${number}/maintainer-packetviaapiGet.buildPullRequestMaintainerPacket,attachDataQuality, the REST route, or its auth gate.Deliverables
loopover_get_pr_maintainer_packetregistered as a remote MCP tool insrc/mcp/server.ts, category"review", inputownerRepoPullShape.loopover_get_pr_maintainer_packetregistered as a local stdio MCP tool inpackages/loopover-mcp/bin/loopover-mcp.ts.Test Coverage Requirements
src/mcp/server.tsandpackages/loopover-mcpare both under the 99%+ Codecov patch gate. Add a unit test for the new remote-tool registration mirroringloopover_get_pr_reviewability's test, and a stdio-tool test matching the existing sibling-tool convention. Verifypackages/loopover-mcp's owncoverage.includescoping before assuming thesrc/**gate applies identically.Expected Outcome
loopover_get_pr_maintainer_packetis reachable via remote MCP and local stdio MCP with the same auth boundary its REST route already enforces, giving parity with itsreviewabilitysibling.Links & Resources
src/api/routes.ts:3329(existing REST route,requireStaticProtectedApiToken-gated, identical first line to the reviewability route atsrc/api/routes.ts:3353)src/mcp/server.ts:2350-2358,packages/loopover-mcp/bin/loopover-mcp.ts:1427-1434(theloopover_get_pr_reviewabilitypattern to mirror)src/mcp/server.ts:1798-1890(MCP_TOOL_CATEGORIESmap)