Deck read tools returned too many tokens to be usable as boards grow — even deck_get_stacks(description_max_length=1) exceeded the MCP token limit because every card was fully serialized in list views. - Add compact projection models (DeckCardSummary, DeckCommentSummary, StackOverview, BoardOverviewResponse) and a uniform detail="summary"|"full" knob (summary default) on deck_get_cards / get_stacks / get_stack / get_archived_stacks. - Add pre-serialization filtering: status (open/done/archived/all), label, assigned_to. - Add deck_get_board_overview: board title + label legend + stacks with compact card rows + counts in a single call. - Compact comments: detail / message_max_length / newest-first order on deck_get_card_comments. - Docs + unit/integration tests. BREAKING CHANGE: deck list tools now default to detail="summary" and status="open". The include_archived_cards parameter is replaced by status (use status="all" to include archived cards); pass detail="full" to restore the previous per-card shape. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.6 KiB
Deck App
Deck Tools
| Tool | Description |
|---|---|
deck_get_boards |
List all Deck boards |
deck_get_board |
Get a board (toggle include_acl / include_users / include_labels) |
deck_get_board_overview |
Compact whole-board snapshot — board → stacks → summary card rows in one call |
deck_get_stacks |
List stacks in a board (cards as compact summaries by default) |
deck_get_stack |
Get a single stack (cards as compact summaries by default) |
deck_get_archived_stacks |
List archived stacks and their cards |
deck_get_cards |
List cards in a stack (compact summaries by default) |
deck_get_card |
Get a single card in full detail |
deck_get_labels / deck_get_label |
List / get board labels |
deck_get_card_comments |
List card comments (compact, newest-first by default) |
deck_create_board |
Create a new Deck board with title and color |
deck_create_stack |
Create a new stack in a board |
deck_update_stack |
Update stack title and order |
deck_delete_stack |
Delete a stack and all its cards |
deck_create_card |
Create a new card in a stack with full options (title, description, due date, etc.) |
deck_update_card |
Update any aspect of a card (title, description, owner, order, etc.) |
deck_delete_card |
Delete a card |
deck_archive_card |
Archive a card |
deck_unarchive_card |
Unarchive a card |
deck_reorder_card |
Move/reorder cards within or between stacks |
deck_create_label |
Create a new label in a board |
deck_update_label |
Update label title and color |
deck_delete_label |
Delete a label |
deck_assign_label_to_card |
Assign a label to a card |
deck_remove_label_from_card |
Remove a label from a card |
deck_assign_user_to_card |
Assign a user to a card |
deck_unassign_user_from_card |
Remove a user assignment from a card |
Deck Resources
| Resource | Description |
|---|---|
nc://Deck/boards |
List all deck boards |
nc://Deck/boards/{board_id} |
Get details of a specific board |
nc://Deck/boards/{board_id}/stacks |
List all stacks in a board |
nc://Deck/boards/{board_id}/stacks/{stack_id} |
Get details of a specific stack |
nc://Deck/boards/{board_id}/stacks/{stack_id}/cards |
List all cards in a stack |
nc://Deck/boards/{board_id}/stacks/{stack_id}/cards/{card_id} |
Get details of a specific card |
nc://Deck/boards/{board_id}/labels |
List all labels in a board |
nc://Deck/boards/{board_id}/labels/{label_id} |
Get details of a specific label |
Compact Retrieval (token efficiency)
On large boards the full card objects (description, nested labels, assigned
users, attachments, etags) make deck_get_stacks responses too large to be
practical. The read tools therefore return compact card summaries by
default and support filtering so you fetch only what you need.
Shared knobs on deck_get_cards, deck_get_stacks, deck_get_stack
(and deck_get_archived_stacks, minus status):
| Parameter | Default | Effect |
|---|---|---|
detail |
summary |
summary returns compact rows (id, title, stackId, labels as titles, assignee UIDs, due/done, counts, a short descriptionPreview); full returns the complete card objects (the pre-0.92 shape). |
status |
open |
Filter before serialization: open (excludes archived and done), done, archived, or all. |
label |
– | Only cards carrying a label with this exact title. |
assigned_to |
– | Only cards assigned to this user UID. |
description_max_length |
– | In detail="full", truncate each description. |
description_preview_length |
140 |
In detail="summary", length of the preview. |
deck_get_board_overview(board_id, status="open", label=…, assigned_to=…)
is the token-efficient way to see a whole board: it returns the board title,
its label legend, and every stack with compact card rows in a single call —
prefer it over deck_get_board + deck_get_stacks for "show me the board"
requests. Use deck_get_card for the full body of a specific card.
Comments — deck_get_card_comments returns compact comments
(id, actorId, message, creationDateTime) by default. Use
detail="full" for the complete objects, message_max_length to truncate,
order (newest/oldest) to sort the page, and limit/offset to page.
Breaking change: list tools now default to
detail="summary"andstatus="open". The previousinclude_archived_cardsparameter has been replaced bystatus(status="all"includes archived cards, matchinginclude_archived_cards=True). Passdetail="full"to restore the old per-card shape.
Deck Project Management
The server provides complete Nextcloud Deck integration, enabling you to manage projects, tasks, and workflows:
- Create and manage boards, stacks, and cards
- Organize tasks with labels and user assignments
- Archive/unarchive cards and reorder within or between stacks
- Full CRUD operations on all Deck entities
- Browse project structure through hierarchical resources
Usage Examples:
# Create a new project board
await deck_create_board(title="Website Redesign", color="1976D2")
# Create workflow stacks
await deck_create_stack(board_id=1, title="To Do", order=1)
await deck_create_stack(board_id=1, title="In Progress", order=2)
await deck_create_stack(board_id=1, title="Done", order=3)
# Create task cards with details
await deck_create_card(
board_id=1,
stack_id=1,
title="Design new homepage",
description="Create mockups for the new homepage layout",
type="plain",
order=1,
duedate="2025-08-15T17:00:00"
)
# Create and assign labels for organization
await deck_create_label(board_id=1, title="High Priority", color="F44336")
await deck_create_label(board_id=1, title="UI/UX", color="9C27B0")
# Assign labels and users to cards
await deck_assign_label_to_card(board_id=1, stack_id=1, card_id=1, label_id=1)
await deck_assign_user_to_card(board_id=1, stack_id=1, card_id=1, user_id="designer")
# Move cards through workflow
await deck_reorder_card(
board_id=1,
stack_id=1, # From "To Do"
card_id=1,
order=1,
target_stack_id=2 # To "In Progress"
)
# Update task progress
await deck_update_card(
board_id=1,
stack_id=2,
card_id=1,
description="Homepage mockups completed, starting development",
order=1
)
# Complete tasks
await deck_reorder_card(
board_id=1,
stack_id=2, # From "In Progress"
card_id=1,
order=1,
target_stack_id=3 # To "Done"
)
# Archive completed cards
await deck_archive_card(board_id=1, stack_id=3, card_id=1)