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 discovers the current tool surface automatically. Keep the CLI current for new client-side behavior such as approval handling.
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.1
Install globally
every (primary) and everyai (alias).2
Sign in
3
Confirm who you are
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:
The
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, then Every applies its server-side approval policy:- 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.
How MCP approvals work
Review the exact retry, expiry, and single-use rules
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.
