---
description: "Manage Jooto projects, tasks, comments, labels, and checklists using the jooto CLI. Use when the user asks about Jooto boards, tasks, or project management operations."
---

You have access to the `jooto` CLI tool for managing Jooto projects.
All commands output JSON to stdout. Errors go to stderr with exit code 1.

## Prerequisites

A profile must be configured before use. Check with `jooto profile list`.
If no profile exists, ask the user for their API key and run `jooto profile add <name> <api_key>`.

## Entity Hierarchy

```
Organization
├── User
└── Board (project)
    ├── Member (user assigned to board)
    ├── Label
    ├── List (column/status lane)
    └── Task (belongs to a List)
        ├── Comment
        └── Checklist
            └── Item
```

Key relationships:
- Board contains Lists, Labels, and Members
- Task belongs to one List within a Board (task commands require board_id)
- Comment and Checklist belong to a Task (commands require task_id)
- Item belongs to a Checklist (commands require checklist_id)
- To operate on a Task, first get board_id from `board list`, then find the task
- To operate on a Comment or Checklist, first get the task_id

## Command Reference

All list commands accept `--page=<n>` and `--per-page=<n>` for pagination (e.g. `jooto board list --page=2 --per-page=50`). The response includes `page`, `per_page`, `total`, and `total_pages`.

### Organization & Users

```
jooto org get                          # Get organization info
jooto user list                        # List all users
jooto user get <id>                    # Get user info
```

### Boards (Projects)

```
jooto board list                       # List all boards
jooto board list --active              # Active boards only
jooto board list --archived            # Archived boards only
jooto board create <title> [description]
jooto board update <board_id> --title=<title> --description=<desc>
jooto board delete <board_id>
jooto member list <board_id>           # List board members
```

### Lists (Columns within a Board)

```
jooto list list <board_id>             # List active lists
jooto list list <board_id> --archived  # Archived lists only
jooto list create <board_id> <name> [color]
jooto list update <board_id> <list_id> --name=<name> --color=<color> --is-done-list=<bool>
jooto list delete <board_id> <list_id>
jooto list reorder <board_id> <id1,id2,...>
```

### Tasks

```
jooto task list <board_id>
jooto task list <board_id> --status=to_do,in_progress
jooto task list <board_id> --archived
jooto task get <board_id> <task_id>
jooto task create <board_id> <list_id> <name> --desc=<description>
jooto task update <board_id> <task_id> --name=<name> --desc=<desc> --status=<status>
jooto task delete <board_id> <task_id>
jooto task search <board_id> [query]   # Full-text search
jooto task move <task_id> <board_id> <list_id>
jooto task archive <board_id> <task_id>
```

Task statuses: `to_do`, `done`, `cancel`, `pending`, `in_progress`

Note: `task move` takes task_id as the FIRST argument (different from other task commands).

### Comments

```
jooto comment list <task_id>
jooto comment get <task_id> <comment_id>
jooto comment create <task_id> <content>
jooto comment update <task_id> <comment_id> <content>
```

### Labels

```
jooto label list <board_id>
jooto label get <board_id> <label_id>
jooto label create <board_id> <name> [color]
jooto label update <board_id> <label_id> --name=<name> --color=<color>
jooto label delete <board_id> <label_id>
```

### Checklists

```
jooto checklist list <task_id>
jooto checklist get <task_id> <checklist_id>
jooto checklist create <task_id> <title>
jooto checklist update <task_id> <checklist_id> <title>
jooto checklist delete <task_id> <checklist_id>
```

### Checklist Items

```
jooto item list <checklist_id>
jooto item get <checklist_id> <item_id>
jooto item create <checklist_id> <content>
jooto item update <checklist_id> <item_id> --checked --unchecked --content=<text>
jooto item delete <checklist_id> <item_id>
```

### System

```
jooto rate-limit                       # Check API rate limit
jooto profile list                     # List configured profiles
jooto profile show [name]              # Show profile details
```

## Global Options

```
--profile=<name>    Use a specific profile (overrides default)
```

## Usage Guidelines

- Always start by identifying the board_id. Run `jooto board list` first if the user hasn't specified one.
- When searching for tasks, prefer `jooto task search` for keyword matching and `jooto task list` with `--status` for filtering by status.
- Quote string arguments containing spaces (e.g., `jooto task create 123 456 "Fix login bug"`).
- Parse the JSON output to extract IDs needed for subsequent commands.
- When creating tasks with descriptions, use the `--desc` flag.
- For endpoints that can return many items (users, members, tasks, comments, checklist items, etc.), paginate with `--page` and `--per-page` rather than assuming the first response contains everything. Inspect `total_pages` in the response to decide whether further pages are needed.
