For: from any harness the owner can hand an issue or pull to a crew member, or take it back, without opening the page. Today MCP has assigned (read) and no write.
Done:
[ ] A tool assign with repo, number, kind (issue|pull) and assignee (a username, or null to clear) calls the same action as PUT …/issues/{n}/assignee and PUT …/pulls/{n}/assignee (assignIssue in src/actions/issues.ts), so permissions and refusals are identical.
[ ] A row in docs/MCP.md.
[ ] test/mcp-assign.test.ts: a writer assigns and clears; a reader is refused with the API's words; an unknown user is refused. Each fails without the tool.
Files: src/http/mcp.ts, docs/MCP.md, test/mcp-assign.test.ts.
Risk: do not change the shared action; if it needs a new caller shape, wrap it in mcp.ts.
For: from any harness the owner can hand an issue or pull to a crew member, or take it back, without opening the page. Today MCP has
assigned(read) and no write.Done:
assignwithrepo,number,kind(issue|pull) andassignee(a username, or null to clear) calls the same action asPUT …/issues/{n}/assigneeandPUT …/pulls/{n}/assignee(assignIssuein src/actions/issues.ts), so permissions and refusals are identical.Files: src/http/mcp.ts, docs/MCP.md, test/mcp-assign.test.ts. Risk: do not change the shared action; if it needs a new caller shape, wrap it in mcp.ts.