> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.neetodesk.com/llms.txt
> Use this file to discover all available pages before exploring further.

# NeetoDesk CLI

> Manage tickets, comments, customers, reports, and more from your terminal.

The **NeetoDesk CLI** (`neetodesk`) lets you manage NeetoDesk from your terminal. It covers the [v2 REST API](/api/introduction): list and create tickets, post comments and drafts, manage customers and team members, and pull reports.

It is designed for people comfortable with a terminal or HTTP. You do not need to be a developer: run `neetodesk setup` to connect an AI assistant such as Claude or Cursor, then describe the task in plain language.

## Why use the CLI?

<CardGroup cols={2}>
  <Card title="Script your support work" icon="terminal">
    Create tickets, post replies, and update statuses from shell scripts and cron jobs.
  </Card>

  <Card title="Audit from the terminal" icon="magnifying-glass">
    Pull tickets or agent and group reports, pipe them to `jq`, and create one-off reports without leaving your shell.
  </Card>

  <Card title="Change things in bulk" icon="layer-group">
    Page through thousands of tickets in one loop, update them unattended, and switch workspaces with a single flag.
  </Card>

  <Card title="Built for AI agents" icon="robot">
    Use token-efficient `--toon` output and one-command setup for Claude, Cursor, Copilot, and more.
  </Card>
</CardGroup>

## CLI vs MCP: which should I use?

NeetoDesk's [MCP server](/mcp/introduction) reaches the same resources the CLI does - tickets, comments and drafts, customers, forms, team members, and reports. The MCP server can also search tickets by subject and by the text of their comments, and the CLI can also list and show customers. Past that, neither one can do more than the other, so choose on how the work reaches NeetoDesk.

### Reach for the CLI when

* **No AI assistant should be in the loop.** A cron entry or a CI step runs `neetodesk` with nothing but the binary and the workspace you already signed in to - no assistant open, no model account, no tokens spent per run. Over MCP, something with model access has to be running before any call happens at all.
* **The output feeds another program.** `--quiet` prints the bare ticket id for the next command; `--json` returns records plus pagination for `jq`, a spreadsheet, or your own script. An assistant replies in prose you would have to copy out by hand.
* **You are working through thousands of records.** Over MCP every page is a separate tool call, and a list that long crowds out the assistant's context. The CLI pages on your terms instead: `--page-size 100` with `--json` returns `total_pages` and `total_records` alongside the records, so a loop knows how many pages are left and walks all of them unattended. Each page lands in a file or goes straight into `jq`, so nothing has to be held in memory and the size of the list stops mattering.
* **You need the same run every time.** A `neetodesk` command is plain text you can save. Drop it into a runbook or a pull request and anyone can read exactly what it will do before it runs, then run it later and get the identical call. An assistant works from a prompt rather than a fixed command, so the same request can come out as a different set of calls on a different day.

### Reach for MCP instead when

* **The details live in your chat, not in your head.** A forwarded email thread or a pasted complaint turns into the ticket with no retyping. The CLI cannot see any of it.
* **You have not decided the steps yet.** "The refund queue is a mess - sort it out" means looking at what is there and choosing. A command can only carry out a decision you have already made.
* **One request should cover several steps.** Find the open tickets about failed card payments, summarize what each customer asks for, and draft a reply on the oldest one, with no glue between commands.
* **The person doing it does not use a terminal.** NeetoDesk hosts the server, so there is nothing to install or keep updated.

<Tip>
  You can have both. Run [`neetodesk setup claude`](/cli/ai-assistants) and your
  AI assistant drives the CLI itself, so a plain-language request still ends in
  an exact command you can read, repeat, and paste into a script.
</Tip>

## What you need

1. Access to one or more NeetoDesk workspaces.
2. Permission to manage the resources you want to work with (tickets, customers, team members, and so on).
3. The `neetodesk` binary. See [Installation](/cli/installation).

<Note>
  Unlike the API, which authenticates with an `X-Api-Key` header, the CLI signs
  you in through your browser and stores credentials locally. See
  [Authentication](/cli/authentication).
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.