- Modernize the new models (DeckCardSummary, DeckCommentSummary, StackOverview, BoardOverviewResponse + the loosened unions) to PEP 604 syntax (list[...] / X | None), per CLAUDE.md. - Make status="done" exclude archived cards so open/done/archived partition the board with no overlap (a done+archived card is reported only as "archived"); document the semantics in docstrings and docs/deck.md, add a partition unit test. - deck_get_archived_stacks: pass through label/assigned_to filters (status stays archived-only by definition); note the limitation in the docstring. - Rename _validate_description_max_length → _validate_positive_length (now a generic positive-length guard). - Soften deck_get_board_overview docstring: it views board state and omits the ACL/user/label-management fields deck_get_board exposes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
6.7 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, done, archived, or all. The first three partition the board (no overlap) — a card that is both done and archived is reported only under archived. |
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)