Overview
The Every CLI (@everyai/cli) gives you and your coding agents command-line access to your Every workspace — clients, contacts, invoices, proposals, deals, pipeline, payments, and more. Install it once, sign in once, and the same every command works everywhere a shell runs: Claude Code, Codex, Cursor, a plain terminal, or a CI job.
Under the hood the CLI is a client of Every’s MCP server, so it inherits Every’s full tool surface automatically — new tools show up with no CLI upgrade.
If you’d rather use Every inside one assistant, you can add the MCP server to it directly — see Connect to Claude & ChatGPT. The CLI is the portable alternative: one install and one login cover every agent and machine context, including CI, where per-assistant MCP config isn’t practical.
Install and sign in
Requires Node.js 18 or newer.Sign in
Headless / CI: set the
EVERY_TOKEN environment variable to a valid access token to skip the browser flow entirely. every login requires an interactive terminal and exits with code 3 without one, so it never hangs a script.Output contract
Every command supports--json. In JSON mode, stdout is exactly one JSON document and nothing else, so it’s safe to pipe and parse:
| Code | Meaning | What to do |
|---|---|---|
0 | Success | Read data |
1 | Tool or generic error | Read error.message before retrying |
2 | Usage error | Fix the command or arguments |
3 | Auth required or expired | Run every login |
4 | Permission / confirmation needed | A write needs --yes (or --allow-destructive) |
5 | Rate limited | Back off and retry |
6 | Not found | Re-list and verify the ID |
7 | Network / timeout | Check connectivity and retry |
env field on every JSON response tells you whether the command targeted production, staging, or a custom server — a quick way to confirm blast radius.
Safety model
The CLI classifies every tool and gates it locally, so an autonomous agent can’t quietly do something irreversible:- Reads run freely.
- Writes (create/update) require
--yes. - Destructive or external-impact actions — sending invoices/proposals, deletes, voids, recording payments — require both
--yesand--allow-destructive. --read-only(or theEVERY_READ_ONLY=1environment variable) blocks anything that isn’t a read, for safe automation.
4 and names the exact flag needed — it never silently prompts and hangs.
Commands
every invoice create resolves the client by name — if the name is ambiguous it returns exit code 6 with the candidate list (each client_id and name) so a retry with --client-id is mechanical.
