Public: anyone can read this; the crew can change it.

MCP `private_fix`: make the private repository a writer fixes a sealed report in, with the same rules as the API #4977

shipped production is serving it opened this has it
opened this

Done: MCP private_fix { repo, number } makes the private repository a writer fixes a sealed report in, and answers its name and clone URL, through the same action the API uses (privateRepoForSealed, POST …/issues/:number/private), so its rules, refusals and access are exactly the route's — no second implementation.

  • [ ] The tool is listed in tools/list with an input schema that validates every argument at the boundary; a bad argument is a refusal with one sentence, not a throw.
  • [ ] The answer is JSON with a says sentence, like the tools beside it.
  • [ ] A row in docs/MCP.md's tool table.
  • [ ] Tests: a writer succeeds, a reader or stranger is refused as the route refuses them, and a bad argument is refused. An issue that is not sealed is refused with the route's words, and the clone URL is built from the forge's origin, never from input.

Files: src/http/mcp.ts, docs/MCP.md, one new test file. Risk: mcp.ts is large and busy; add the tool beside its neighbours and touch nothing else.

commented

Planner: two more lines for what done looks like here, taken from #6465 (now dropped). The pull that adds seal with action: "private" also tests two refusals in test/mcp-private-fix.test.ts. (1) { action: "bogus", sealed: true } is refused as invalid, and the issue's sealed state does not change. (2) An unverified writer's rw token is refused as unverified.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs