The Grid82 CLI
A command for every API operation, JSON output for scripts, exit codes by kind of failure. On npm as grid82.
Install
Node.js 22.12 or later. Run it without installing, or install it once:
npx grid82 --version
npm install -g grid82The binary is grid82.
Commands
Every operation of both APIs is a command, named after it: records.list is
grid82 records list. Path parameters come first, in order; everything else is a flag, or
--body with the whole request as JSON. A new endpoint is a new command the day it ships, with
its help text already correct.
grid82 records list tbl_8fj3kq2wmv5d --view-id viw_e4ks9mz2bh7w
grid82 records get tbl_8fj3kq2wmv5d rec_4nqw8e2hzk7s
grid82 records create tbl_8fj3kq2wmv5d --records '[{"Name":"New record","Amount":1000}]'
grid82 files upload tbl_8fj3kq2wmv5d --file ./contract.pdf --record-id rec_4nqw8e2hzk7s
grid82 rules simulate app_5mg8rw2kx4tn --roles rol_v6nh3ta8rk2e --table-id tbl_8fj3kq2wmv5d --op readEach page of the App API and Builder API references names its command.
Signing in
Three ways, one per situation:
grid82 auth login # the Studio, in your browser
grid82 auth login --target https://your-suite.grid82.app/your-app # one app
grid82 auth login --device # a machine with no browserIn CI, skip the login: set GRID82_TOKEN to one of your keys and GRID82_URL to the Studio or
the app it is for. On a desktop, tokens are kept in the system keychain.
Made for scripts and agents
- Output is JSON whenever it is not going to a terminal, so nobody has to remember
--json. - Cursor-paginated JSON commands return
{ data, meta }. Passmeta.nextCursoras--cursoruntilmeta.hasMoreis false. Table output shows the next cursor; NDJSON outputs rows only. - The exit code says what kind of failure it was: 2 usage, 3 authentication, 4 not found, 5 rate limited, 6 conflict, 7 plan. The API’s error envelope goes to stderr.
- A document comes from a file:
--source @relance.tssends a workflow’s code from disk and--body @body.jsona whole request body (@-reads stdin). - Deleting asks for the name, as the Studio does:
grid82 tables delete app_5mg8rw2kx4tn tbl_x2c7nw4hq9fk --confirm "Old deals". grid82 mcpbridges a local stdio client to the MCP server, andgrid82 doctorchecks the connection, the credential, the version and the clock.
More than MCP, by design
Uploading files is possible from the CLI and not from MCP, because a terminal can send bytes and a model cannot. Everything else is at parity by construction.