argorant 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +100 -17
  2. package/bin/argorant.js +631 -64
  3. package/package.json +3 -2
package/README.md CHANGED
@@ -1,7 +1,8 @@
1
1
  # argorant
2
2
 
3
3
  Search, count, reveal, export, and verify B2B contacts from the Argorant
4
- database — from your terminal, scripts, or coding agent. No install required.
4
+ database, and find work emails by name and company domain, from your
5
+ terminal, scripts, or coding agent. No install required.
5
6
 
6
7
  ```sh
7
8
  npx argorant count "fintech CFOs in germany"
@@ -9,7 +10,7 @@ npx argorant count "fintech CFOs in germany"
9
10
 
10
11
  Company lookups, counts, and masked searches spend **zero contact credits on
11
12
  an active plan**. Reveals and exports draw on your Argorant workspace
12
- quota/credits — the same pool as the app, API, and MCP server.
13
+ quota/credits - the same pool as the app, API, and MCP server.
13
14
 
14
15
  ## Authenticate
15
16
 
@@ -19,34 +20,115 @@ Create an API key at **app.argorant.com/profile** (API keys), then:
19
20
  npx argorant login # paste your ag_live_ key (stored in ~/.argorant)
20
21
  ```
21
22
 
22
- Or set `ARGORANT_API_KEY=ag_live_…` in your environment — ideal for scripts,
23
+ Or set `ARGORANT_API_KEY=ag_live_…` in your environment - ideal for scripts,
23
24
  CI, and agents.
24
25
 
25
26
  ## Commands
26
27
 
27
28
  | Command | What it does | Cost |
28
29
  | --- | --- | --- |
29
- | `login [key]` | Save an API key | — |
30
- | `logout` | Forget the saved key and base (`~/.argorant/config.json`) | — |
30
+ | `login [key]` | Save an API key | - |
31
+ | `logout` | Forget the saved key and base (`~/.argorant/config.json`) | - |
31
32
  | `whoami` | Account, scopes, daily quota | free |
32
33
  | `count "<query>"` | Count matching contacts | free |
33
34
  | `company <company.com> -n 5` | Count people at a company, split business-email coverage, preview masked roles | free |
34
35
  | `search "<query>" -n 10` | Preview matches (masked identity, details redacted) | free |
35
36
  | `sample <company.com> [-o sample.csv]` | Read a website and build 25 distinct, live-valid company leads from it | free sample |
36
- | `reveal "<query>" -n 25` | Reveal full contact details (name, email, phone, LinkedIn) | quota |
37
- | `export "<query>" -n 1000 -o leads.csv` | Verified CSV export, polled until ready | quota |
37
+ | `reveal "<query>" -n 25` | Reveal full contact details (name, work email, LinkedIn) | 1 credit per new working email |
38
+ | `reveal "<query>" -n 25 --phones` | Same, plus each person's phone number (direct dial or mobile) | + 10 credits per number found |
39
+ | `enrich --email <a@b.com> [--phones]` | The person behind an address, optionally with their phone number | 1 credit per match, + 10 if a number is found |
40
+ | `export "<query>" -n 1000 -o leads.csv` | Verified CSV export, polled until ready | 1 credit per working email |
41
+ | `export "<query>" -n 1000 --phones -o leads.csv` | Same, with phone numbers in the file | + 10 credits per number in the file |
38
42
  | `export status <job_id> [--batch]` | Status of an export you already created | free |
39
43
  | `export download <job_id> [--batch] -o leads.csv` | Re-download a finished export | free |
40
44
  | `list create --name "<n>" [filters]` | Save a reusable filtered list (server counts it) | free |
41
45
  | `list status <id>` | A saved list's size and mode | free |
42
46
  | `verify <email>` / `verify --file emails.csv -o out.csv` | Verify your own addresses (verification pool; recent re-checks free) | pool |
43
- | `campaigns …` | Live outbound campaigns — **operator keys only**, see below | — |
47
+ | `find "<first last>" --domain <d>` / `find --file people.csv -o found.csv` | Find a person's work email from a name and company domain, one or a whole list ([details](#find-emails)) | 1 credit found, 0.25 nothing found |
48
+ | `find status \| download \| resume \| cancel <job_id>`, `find pricing` | Manage a find job; show prices, balance and limits | free |
49
+ | `campaigns …` | Live outbound campaigns - **operator keys only**, see below | - |
50
+
51
+ ## Phone numbers
52
+
53
+ Phone numbers are never included unless you ask for them with `--phones` (reveal, enrich, export).
54
+ A phone number costs 10 credits, and only when a number is actually returned. People without a number
55
+ cost nothing, and numbers you already unlocked (in the app, the API or the connector) are free. Phone
56
+ numbers come with the Pro plan and higher. The CLI shows the price before it spends anything, and the
57
+ result says per person whether a number came back and what it cost. Company and HQ numbers stay free.
58
+
59
+ ```sh
60
+ npx argorant reveal --title CFO --domain stripe.com -n 5 --phones
61
+ npx argorant enrich --email patrick@stripe.com --phones --json
62
+ npx argorant export --title CFO --country Germany -n 200 --phones -o cfos.csv
63
+ ```
44
64
 
45
65
  Exports above 50,000 rows are created as a multi-chunk batch: the CLI polls
46
66
  `export status --batch` for you and writes one file per chunk
47
67
  (`leads-part1.csv`, `leads-part2.csv`, …). The batch id is printed so you can
48
68
  re-download any time with `export download <batch_id> --batch`.
49
69
 
70
+ ## Find emails
71
+
72
+ Give a name and the company's domain, get the person's work email.
73
+
74
+ ```sh
75
+ npx argorant find "Jane Doe" --domain acme.com
76
+ npx argorant find --first Jane --last Doe --domain acme.com
77
+ # jane.doe@acme.com · Confirmed · confidence 95 · 1 credit
78
+ ```
79
+
80
+ Each lookup prints one line: the email (or `no email found`), its status, the
81
+ confidence and what it cost. Statuses:
82
+
83
+ | Status | Meaning | Cost |
84
+ | --- | --- | --- |
85
+ | Confirmed | Address found and confirmed | 1 credit |
86
+ | Unconfirmed, catch-all domain | The domain accepts every address, so the best address is returned without confirmation | 1 credit |
87
+ | Not found | No address found for this person | 0.25 credit |
88
+ | No mail server | The domain does not receive email | free |
89
+ | Try again later | No answer for this domain right now; run it again later | free |
90
+
91
+ Invalid rows and every failed request (out of credits, limits, a busy
92
+ server) are free too. A 0.25 charge takes one whole credit and keeps the rest
93
+ as prepaid no-result lookups, which cover your next three misses. Run
94
+ `argorant find pricing` for the live prices, your balance, prepaid lookups and
95
+ limits.
96
+
97
+ A whole list runs as a job. The file is a CSV with a header row and the
98
+ columns `first_name`, `last_name` and `domain`; an optional `ref` column is
99
+ passed through to the results:
100
+
101
+ ```sh
102
+ npx argorant find --file people.csv -o found.csv --max-credits 200 --name "Q4 list"
103
+ ```
104
+
105
+ The CLI prints the job id, shows progress (processed/total, found, charged)
106
+ and saves the results CSV when the job is done (`argorant-found.csv` by
107
+ default). Columns: `row, ref, first_name, last_name, domain, email, status,
108
+ confirmed, confidence, credits_charged`. The output path is checked before the
109
+ job is created. On a terminal the CLI asks first, showing the prices and the
110
+ maximum charge; with `--yes`, `--json` or no TTY it starts right away.
111
+ Duplicate rows are removed before anything is charged. `--max-credits` caps
112
+ the job: it pauses at the cap instead of spending more.
113
+
114
+ A job pauses when your credits run out, when it reaches `--max-credits`, at
115
+ the daily limit, or when almost none of the recent lookups found anything. The
116
+ CLI says why and still saves what was found so far. Ctrl-C only stops
117
+ watching; the job keeps running.
118
+
119
+ ```sh
120
+ argorant find status <job_id> # progress and counts
121
+ argorant find download <job_id> -o found.csv # the results CSV, any time
122
+ argorant find resume <job_id> [--max-credits 300] # continue a paused job
123
+ argorant find cancel <job_id> # stop; rows not processed yet are not charged
124
+ ```
125
+
126
+ Exit codes: a single `find` exits `1` when no email came back, so scripts can
127
+ branch without parsing. A `find --file` job that pauses exits `5` when out of
128
+ credits and `4` at the daily limit or when slowed down; a job that stops at
129
+ your own `--max-credits` cap exits `0`. Errors use the codes below (`5` out of
130
+ credits, `4` rate limit with the wait time in the message).
131
+
50
132
  ## Filters
51
133
 
52
134
  Combine free text with structured filters:
@@ -57,7 +139,7 @@ Combine free text with structured filters:
57
139
  --has-phone --has-linkedin --has-email --verified-only
58
140
  ```
59
141
 
60
- `--keywords` is the widest, most reliable filter (comma = OR) — prefer it over
142
+ `--keywords` is the widest, most reliable filter (comma = OR) - prefer it over
61
143
  `--industry`. `--country`/`--geography` accept regions (Europe, EMEA, DACH,
62
144
  Nordics, APAC, LATAM, GCC…).
63
145
 
@@ -84,13 +166,14 @@ npx argorant company stripe.com --json
84
166
  npx argorant reveal "heads of procurement" --country Germany -n 25 --json --yes
85
167
  ```
86
168
 
87
- ### Non-interactive behaviour — read this before scripting `reveal`/`export`
169
+ ### Non-interactive behaviour - read this before scripting `reveal`/`export`
88
170
 
89
- `reveal`, `export`, and `verify --file` ask for confirmation **only** when
90
- stdin is a TTY and neither `-y/--yes` nor `--json` was passed. In CI, in a
91
- pipe, or inside an agent loop there is **no prompt at all** — these commands
92
- spend credits immediately. The prompt is a convenience for humans at a
93
- terminal, never a safety net. Check your `-n` before you run them.
171
+ `reveal`, `export`, `verify --file` and `find --file` ask for confirmation
172
+ **only** when stdin is a TTY and neither `-y/--yes` nor `--json` was passed.
173
+ In CI, in a pipe, or inside an agent loop there is **no prompt at all**, these
174
+ commands spend credits immediately. A single `find` never asks; each lookup
175
+ costs at most 1 credit. The prompt is a convenience for humans at a terminal,
176
+ never a safety net. Check your `-n` and `--max-credits` before you run them.
94
177
 
95
178
  Related guardrails, so a mistake stays cheap:
96
179
 
@@ -108,9 +191,9 @@ Related guardrails, so a mistake stays cheap:
108
191
  | `0` | success |
109
192
  | `1` | generic error (bad usage, network, failed job) |
110
193
  | `2` | not authenticated (no key, or the key was rejected) |
111
- | `3` | forbidden — the key lacks the required scope |
194
+ | `3` | forbidden - the key lacks the required scope |
112
195
  | `4` | rate limit or daily quota reached |
113
- | `5` | plan upgrade required (HTTP 402); the message carries the upgrade URL |
196
+ | `5` | plan upgrade required or out of credits (HTTP 402); the message carries the upgrade URL |
114
197
 
115
198
  Exit `5` is deliberately distinct from `1`: an agent can tell "this account
116
199
  needs a paid plan" apart from "something broke".