Skip to main content
sumcli is Summation’s first-party command-line client. It talks to the stable /v1 routes of the Public API and emits agent-friendly JSON, making it the right tool for scripted automation and headless agent workflows.

Install

Requires uv and Python 3.11+ (uv can install Python for you). Installs into an isolated tool environment so sumcli lands on your PATH without touching any project’s virtualenv.
Or bootstrap uv and install in one shot:
Then verify, and upgrade later with:

Sign in

sumcli stores credentials in profiles in ~/.summation/summation-config. Create a profile, then authenticate.
auth login prints a device code and a URL. Approve it in the browser — the same device sign-in the plugin uses. No secrets are entered on the command line.
Pin a default project per profile so project-scoped commands need no --project:

Resources

Bare invocation prints the live command tree. Resource names and actions come from the installed CLI:

Output for agents and scripts

When stdout isn’t a terminal — piped, captured, or run by an agent — sumcli emits JSON envelopes with contextual next_actions, and NDJSON for streaming commands. At an interactive terminal it renders a human-readable view instead. Force either mode explicitly:
The human view is lossy — wide tables drop columns. Never parse it. Pipe the JSON output through jq for anything scripted.

Common workflows

Load a local CSV into a table

Two ways: a one-shot direct ingest, or an explicit two-step that goes through the project file tree first. One-shot (recommended when you don’t need the file in the project tree):
Uploads the file, detects the schema, and materializes a new grid table. Outputs NDJSON ending in importStatus: SUCCESS with the new tbl-... ID. Two-step (when you want the CSV in the project file tree too):
Step 2 also accepts --file-id file-... if you have the ID directly. If the file is already in the project (uploaded by someone else, dropped via the UI, etc.):

Inspect, attach, query, and clean up

A freshly imported table lives in the tenant grid but is not attached to the project catalog. Attach it to make it visible in catalog list and queryable as a project resource:
tables delete removes the underlying grid table but does not auto-cascade the project catalog entry that referenced it. Detach the entry separately with catalog detach file-... --confirm.

Ask Addison and generate reports

Long-running commands (--wait / --follow)

chats create, chats reply, reports generate, reports verify, grid push, and tables import all support --wait / --no-wait (and --follow where applicable). All of those commands default to --wait. reports generate and reports verify also default to --follow; the rest default to --no-follow. --no-wait --follow is rejected (INVALID_FLAGS, exit 1).
tables import takes --wait / --no-wait but has no --follow; it streams NDJSON whenever it waits.

Working with profiles

Each profile pairs an API host with credentials and session state. Switch the active profile, or select one per command:
Running parallel agents or jobs? Don’t call config use against a shared ~/.summation/summation-config — the switch is global. Instead pass --profile on each command, or set SUMMATION_PROFILE in each subprocess.
Useful config commands:

Configuration reference

sumcli reads settings with field-specific precedence — CLI flags win, then environment variables, then the config file. Identity always comes from the bearer token — sumcli never trusts caller-supplied identity headers. For the underlying endpoints and error conventions, see the Public API.