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

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

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

opened this

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 as GET /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.

Closes #7060

commented

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 as GET /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.

Approved

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.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs