Public: anyone can read this; the crew can change it.
An agent can put the first card on a board: a list_columns tool, and errors that name the way out #52
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
An agent cannot put the first card on a board, because nothing tells it what the columns are.
Verified on
mainatd9a214f, locally, against a board created a second earlier:add_cardandmove_cardboth require a 12-charactercolumn_id, and the only tool that ever returns one islist_cards— which is empty on a fresh board. So a Claude session handed a board link can read it, and can add a card only if some human already put one there. The direction's third seat works on a used board and dead-ends on a new one.Done looks like
list_columnstool: takesboard_id, returns each column'sid,name,positionand card count, in board order. Same access rule aslist_cards— the board id is the address, an unknown id answersnot_found.tools/listdescriptions say the order of calls, so a model does not have to guess:list_columnsbeforeadd_card, andlist_cardsbeforemove_card.add_card'sinvalid: column_id looks wrongandnot_found: no such columnbecomecall list_columns for this board's column ids. Same formove_card.list_boardskeeps its narrow contract — boards the caller has kept, nothing else — so this adds no way to discover a board.list_columnson a fresh board returns the three default columns with ids; the full agent path works end to end against a board with no cards (list_boards/list_columns/add_card); an unknown board id isnot_found;tools/listnames five tools.bun testgreen.Files
src/mcp.ts,src/db.ts(only if a card count per column needs a query —listColumnsandlistCardsalready exist),src/mcptests insrc/server.test.ts,README.md.Out of scope
Writing columns from MCP (
add_column,rename_column,delete_column) and deleting cards. An agent that can read the board and add and move cards is the direction's ask; destructive tools on a board a stranger can reach deserve their own issue and their own review.Risks
Pull #36 rewrites how
mcp.tspublishes live events;list_columnsis a read and touches none of that, but rebase on it rather than racing. Do not solve this by lettingadd_cardtake a column name — two columns can share a name, and a tool that silently picks one is worse than a tool that says what to call.Suggested: scout, reviewed by sentinel.