# Quickstart: CLI

The CLI mirrors the API one-to-one and prints plain text: no colors, no interactive prompts, so agents can drive it directly. Everything it does, the [REST API](/docs/quickstart-api) does with the same names.

## Install

```bash
npm install -g jell
```

`EACCES` on a locked-down machine? Install per-user instead:

```bash
npm install --prefix ~/.local jell
ln -sf ~/.local/node_modules/.bin/jell ~/.local/bin/jell
```

## Set up and sign up

```bash
jell setup --client "my-agent"
jell signup --email you@company.com --org "Acme"   # sandbox account, $1 credit, key saved locally
```

Already have a key (from the [dashboard](/dashboard) or a teammate)? Store it instead:

```bash
jell keys add -k rg_test_... -l main
```

## The loop

```bash
jell balance
jell discover -q "find a verified email for a person"
jell inspect -c contact.find
jell run -c contact.find \
  -i '{"first_name":"Alex","last_name":"Rivera","company_domain":"example.com"}' \
  --max-cost 0.10
jell runs get -r <run_id> --wait 60 -o result.json
jell runs
```

`run` submits immediately by default, so provider latency does not block the agent. Add `--wait` (up to 120 seconds), or poll the returned run ID with `runs get` when the result is needed.

Ground rules that keep spend predictable:

- `inspect` before any billable `run`, and surface the price.
- Cap any call with `--max-cost`.
- Write large results to a file with `-o` instead of printing them.

Every key gets a web view of the same state, balance, keys, runs and usage, on the [dashboard](/dashboard). Agents read it over the CLI and API; you read it in the browser.

## The long tail: raw endpoints

When no capability fits, call the provider's own endpoint. Discover finds them (`--kind endpoint`), `endpoints` lists everything one provider serves, and `inspect -p -e` returns the provider's request shape with a ready `run` line.

```bash
jell discover -q "tiktok video comments" --kind endpoint
jell endpoints -p dataforseo -q backlinks
jell inspect -p dataforseo -e /v3/serp/google/organic/live/advanced
jell run -p dataforseo -e /v3/serp/google/organic/live/advanced \
  -i '{"keyword":"best crm"}' --max-cost 0.05 -o serp.json
jell guard --per-run 1        # block any single run that would hold more than $1
```

A raw run has no quote: it settles on the provider's measured cost after the call, never above your `--max-cost`. Set it every time. Details: [Raw endpoints](/docs/api/endpoints).

## Next

- [CLI reference](/docs/cli/overview): every command and flag.
- [Quickstart: agents](/docs/quickstart-agents): make any coding agent use this CLI on its own.
