neetoinvoice is the official command line interface for NeetoInvoice. It wraps the same
public REST API documented in the API reference, so anything
you can do over HTTP you can do from a shell, a script, or a CI job.
No API key to manage
Sign in once from the browser with
neetoinvoice login. Credentials are stored on your
machine and reused by every command.Built for scripting
Every command speaks JSON on request, and
--quiet reduces a response to the single
identifier a shell pipeline needs.Built for AI assistants
neetoinvoice setup claude teaches your coding assistant the command surface, and
--toon cuts token use when feeding output back to a model.Multiple workspaces
Sign in to as many subdomains as you need and pick one per command with
--subdomain.CLI vs MCP: which should I use?
NeetoInvoice’s MCP server reaches the same resources the CLI does - clients, recipients, projects, project users, team members, time entries, invoices, PTO, and the three reports. The two are level in reach, so choose on how the work reaches NeetoInvoice.Reach for the CLI when
- No AI assistant should be in the loop. A cron entry or a CI step runs
neetoinvoice reports payroll-summary --month 8 --year 2026with 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.
--quietprints the bare id for the next command, as inCLIENT_ID=$(neetoinvoice clients create --name "Acme Corp" --quiet), and--jsonhands a timesheet summary straight tojq, a spreadsheet, or the payroll script that consumes it. What comes back over MCP is a chat reply you would have to copy out by hand. - You are working through a year of time entries.
neetoinvoice time-entries listwith--page-size 100 --jsonreturnstotal_pagesandcurrent_page_numberin apaginationobject, so a loop knows how many pages are left and walks all of them unattended. Each page lands in a file or goes straight intojq, so nothing has to be held in memory and the size of the project’s history stops mattering. Over MCP every page is a separate tool call, and entries in that volume crowd out the assistant’s context. - The run has to be repeatable and reviewable. Month-end close is the same commands in the same order every month: the timesheet summary, then the payroll summary, then the invoices. The command is the artifact - put it in a runbook or a pull request and it makes the identical call next time. Ask twice over MCP and the assistant may take a different route.
Reach for MCP instead when
- The details live in your chat, not in your head. A client writes “we approved 6 hours of design on the 14th” and the assistant turns that message into the time entry. The same entry from the shell needs the client, project, and task ids, the date, and the hours all typed out, and the CLI cannot see the message at all.
- You have not decided the steps yet. “Acme’s July hours look wrong - have a look” means reading what is there and choosing what to do about it. A command can only carry out a decision you have already made.
- One request should cover several steps. “Bill Acme for July” finds the client, pulls its
unbilled entries for the month, bills them, and emails the invoice to the recipients, with the
ids carried from one call to the next. The same invoice from the shell needs a
--json-filefile listing every entry with its ids, hours, and rate, plus a total you worked out yourself. - The person doing it does not use a terminal. The office manager chasing this week’s missing timesheets installs nothing: NeetoInvoice hosts the server, and their assistant is already open.
Prerequisites
- A NeetoInvoice workspace and its subdomain.
- An account in that workspace. The CLI acts as you, so it can only reach what your role permits.
Next steps
Installation
Install the CLI on macOS, Linux, or Windows.
Authentication
Sign in, check who you are, and work across several workspaces.
Commands overview
Every command grouped by resource.
Output formats
Pretty tables, JSON envelopes, quiet mode, and TOON.