Docs
CLI
ra is Closefinch's command line, built for people and coding agents. It covers every resource in the REST API, prints a table in a terminal and JSON when piped, and has a built-in --jq. It has no dependencies (Node's standard library only) and needs Node 22.12 or newer. Version 0.1.0.
Install
It isn't on the npm registry yet: install the package built from the repository, with npm. Never pipe a script into a shell.
node tools/cli/pack.mjs # in the repository: writes apps/cli/dist/revenueagent-cli-0.1.0.tgz
npm install -g ./apps/cli/dist/revenueagent-cli-0.1.0.tgz
ra --versionSign in
ra login --host https://api.closefinch.comIt shows a short code; approve it in your browser (OAuth device flow, nothing to paste). For scripts, use a key from Settings → API keys instead, read from a variable rather than typed on the command line: printf %s "$RA_API_KEY" | ra auth login --host https://api.closefinch.com --with-key. In CI, set RA_HOST and RA_API_KEY. ra auth status shows who you are; ra auth logout forgets the profile.
Common commands
ra deals list --query q=Acme --fields id,name
ra deals get deal_…
ra tasks create --field values.title="Call back" --raw-field 'values.related=["deal_…"]'
ra api GET /v1/forecast
ra runs start agt_… --input '{"deal_id":"deal_…"}' --wait
ra bulk-create contacts --input contacts.jsonl- Deleting and merging need
--force;--dry-runprints the request instead of sending it. ra runs start … --waitexits 1 if the run failed; 3 if it's waiting for a person, paused or sleeping; and 0 otherwise: done, cancelled, or still running after about 20 minutes of waiting (check its status before relying on it).ra agent-contextprints, as JSON, what the CLI and your credential can do.
Filter with --jq
ra deals list --jq '.data[] | select(.values.amount.amount > 10000) | {id, name}'A deal's amount is { amount, currency }, so compare .values.amount.amount. The built-in jq covers paths, select, map, comparisons, object and array construction, string interpolation, if/reduce/try, sort_by/group_by/unique_by, to_entries/with_entries, regular expressions and formats such as @csv and @json. It only reads: no assignment, no def, no environment access.
Set up Claude Code
ra install claude-codeIt adds the MCP server to the project's .mcp.json and a skill for Claude Code. They reference ${RA_API_KEY}, never the key itself, so set RA_API_KEY to a key from Settings → API keys (the browser sign-in doesn't make one). ra install codex prints the block for Codex's config instead. Quickstarts for other clients: Quickstarts.
Every command
From ra help (version 0.1.0):
ra 0.1.0: the Closefinch CLI
ra login --host <api url> [--scope "crm:read …"] sign in in your browser with a short code (no key to paste)
ra auth login --host <api url> --key <ra_live_…> sign in with an API key (or --with-key to read it from stdin)
ra auth login --host <api url> --client-id <id> sign in with OAuth (an owner registers the app with
redirect http://127.0.0.1:8765/callback; --port to change)
ra auth status | ra auth logout
ra sandbox create --host <api url> [--agent-name <name>] [--claim-email <person's email>]
for agents: a sandbox organization with sample data and a limited
key (7 days, no outbound until a person claims it), saved as a profile
ra api <GET|POST|PATCH|PUT|DELETE> <path> [--field k=v] [--raw-field k=<json>] [--body <json>|@file|-] [--query k=v]
ra <resource> list [--query k=v] [--limit n] [--all]
ra <resource> get <id> | create [--field …] | update <id> [--field …] | delete <id> --force
ra bulk-create <resource> --input <file.json|file.jsonl|-> [--batch <id>] 25 per request; exits 1 if any row fails
ra runs start <agent> [--input <json>] [--wait]
ra agent-context what this CLI and your credential can do, as JSON
ra install claude-code [--dir .] add the MCP server (.mcp.json) and a skill for Claude Code
ra install codex print the Codex config block (writes nothing)
Output: a table in a terminal, JSON when piped. --json, --output table|json|toon, --fields a,b.c, --jq <program> (a built-in jq).
--dry-run prints the request instead of sending it. --profile <name>, --host <url>. CI: RA_HOST, RA_API_KEY.