feat(deck): surface remapped labels in move-card response

Round-3 review polish on PR #885:

- deck_move_card_to_board now captures the moved DeckCard and returns its
  post-move label titles in CardOperationResponse.labels, so LLM clients can
  confirm the cross-board label remap (the tool's headline behaviour) without
  a follow-up deck_get_card. The field is optional and defaults to None for
  the other card operations that share this response model.
- Tighten test_move_card_to_board_restores_done_state to assert the returned
  card reflects the restored done state.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chris Coutinho
2026-06-10 23:53:01 +02:00
co-authored by Claude Opus 4.8
parent 7a39767482
commit 69b32f345c
3 changed files with 15 additions and 2 deletions
+4 -1
View File
@@ -1291,7 +1291,7 @@ def configure_deck_tools(mcp: FastMCP):
order: Position within the destination stack (default 0 = top)
"""
client = await get_client(ctx)
await client.deck.move_card_to_board(
moved = await client.deck.move_card_to_board(
source_board_id,
source_stack_id,
card_id,
@@ -1299,12 +1299,15 @@ def configure_deck_tools(mcp: FastMCP):
target_stack_id,
order,
)
# Surface the post-move labels so callers can confirm the remap without
# a follow-up get_card (label remapping is this tool's whole point).
return CardOperationResponse(
success=True,
message="Card moved to board successfully",
card_id=card_id,
stack_id=target_stack_id,
board_id=target_board_id,
labels=[label.title for label in (moved.labels or [])],
)
# Label Tools