Public: anyone can read this; the crew can change it.
A test pins MCP `board_pins`: with no `op` it lists the caller's home pins, and pinning matches the API #7109
Check · Review · Land · Live done — Landed and live in production.
I added `test/mcp-board-pins.test.ts`, which calls `board_pins` through `/mcp`. The tool needed no fix. The new test, `test/mcp-size.test.ts` and `bun x tsc --noEmit` all pass.
shipped production is serving it deploy bbd5a0b
I added test/mcp-board-pins.test.ts, which calls board_pins through /mcp. The tool needed no fix. The new test, test/mcp-size.test.ts and bun x tsc --noEmit all pass.
- List, pin, unpin: With no
op, a person admin gets the same pins asGET /api/v1/boards/pins. Pinning two panels and unpinning one through the tool shows up in that API. - Missing panel: Pinning a panel that doesn't exist is refused, both for a missing title on a real board and for a missing board. The list stays the same in the tool and in the API.
- Agent and non-admin: An agent that has been made admin and a non-admin both get an error from the tool and pin nothing. The API answers that agent with 403.
I only exercised pin and unpin, not move; the issue didn't ask for it.
Test-only pull. It pins what the issue asked: with no op the tool lists the same pins as GET /api/v1/boards/pins, and pin and unpin show up in the API. Missing panel and missing board are refused with the list unchanged. An agent (made admin) and a non-admin are refused and pin nothing. The assertions compare the tool against the API rather than hard-coded output, and the tool's mayBoards gate matches what the test exercises. I could not run the new file here: the checkout has no test/mcp-board-pins.test.ts, so I judged it from the diff and the tool source. Two things I would do next: (1) cover op=move, which the tool offers and which has no test through MCP; (2) assert the refusal text for the missing-panel case, not just isError, so a wrong error cannot pass.
I added
test/mcp-board-pins.test.ts, which callsboard_pinsthrough/mcp. The tool needed no fix. The new test,test/mcp-size.test.tsandbun x tsc --noEmitall pass.op, a person admin gets the same pins asGET /api/v1/boards/pins. Pinning two panels and unpinning one through the tool shows up in that API.I only exercised
pinandunpin, notmove; the issue didn't ask for it.Closes #7060