How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/getcargohq/cargo-skills --skill cargo-quickstartBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Cargo Quickstart — first value in two minutes
One guided demo: pull ~25 fresh leads matching a buyer persona the user picks, show the cost receipt, then save the pull as a recurring play. The point is not the list — it's that in minute 3 the user owns a running system, not a one-off result.
A new account starts with 100 free credits — no card. This demo spends about 5 of them. Say that out loud before the first paid call ("this costs about 5 of your 100 free credits"): it converts the moment from a purchase decision into a look around, which is the whole job of a quickstart. Never let a new user think the demo is why they'd run out.
Bootstrap
Already signed in (cargo-ai whoami returns a workspace)? Skip to the next section.
npm install -g @cargo-ai/cli # no global install? prefix every command with `npx @cargo-ai/cli`
cargo-ai login --email you@company.com # emailed code, no browser; creates the account on first use
# alternatives: --oauth (browser) · --agentid (an agent as itself) · --token <api-token> (CI)
cargo-ai whoami # confirm the active workspace before any writeNot ready to sign up? Two things work with no account, free: browse the catalog (cargo-ai orchestration action list enrich company) and dry-run an action (cargo-ai orchestration action execute --action '<from action list>' --data '{"domain":"example.com"}' --dry-run — validates the inputs, shows sample output in the real shape and the credit price, calls nothing). Offer it once if the user hesitates at the email step; don't detour a user who is ready — the demo is the real thing.
A first sign-in lands in a new workspace named `Personal`; pass --workspace-name "<Company> GTM" to the login that creates the account and it renames that one (within 10 minutes, while you're its only member) instead of making a second. Starter connectors and agents seed in the background, so an empty-looking workspace a minute after sign-up may still be filling in — that is not a reason to stop.
Every command prints JSON to stdout; failures exit non-zero and print {"error": "...", "status": ..., "body": {...}} to stderr. Anything that creates a run or a batch is async — pass --wait-until-finished or poll the matching get. When the full skill bundle is installed, `../cargo/references/prerequisites.md` adds the CLI version pin, token scopes, and the admin-only surface.
The one question
Ask exactly one question before doing anything:
"Who do you sell to?" (a persona in a few words — e.g. "Heads of RevOps at mid-market SaaS")
Everything else — provider, filters, limits — you decide. Don't ask about output format, volume, or providers; defaults below.
Speed budget — HARD RULES
The demo has a two-minute budget from answer to deliverable. On the fast path:
- No discovery detours. Do not run
cargo-ai --version,cargo-ai whoami,connection connector list, or any exploratory command first. Auth problems will surface as errors on the first real call — handle them then. - One command block per step, no narration between commands.
- Paid work is capped at ~5 credits total. The demo uses LinkedIn-native people search (
salesNavigator.searchLeads, 0.2/record → 25 records ≈ 5 credits). Nothing else paid runs without asking. - Never dead-end. Every step has a fallback (ladder below). If a rung fails, drop one rung silently and keep moving.
Fast path
Translate the persona into a searchLeads filter (quote the exact title phrase in keywords; a bare keyword matches loosely and pollutes the page) and run:
# 1. Execute — returns a run object; note run.uuid and run.workflowUuid.
# searchLeads bills 0.2 per returned lead, so limit 25 costs at most 5 credits.
cargo-ai orchestration action execute \
--action '{"kind":"connector","integrationSlug":"salesNavigator","actionSlug":"searchLeads"}' \
--data '{"keywords": "\"<persona title phrase>\"", "limit": 25}' \
--wait-until-finished > /tmp/quickstart-run.json
# 2. Fetch the output data (NOT in the execute stdout) — signed URL, then filter to THIS run
RUN_UUID=$(jq -r '.run.uuid' /tmp/quickstart-run.json)
WF_UUID=$(jq -r '.run.workflowUuid' /tmp/quickstart-run.json)
curl -s "$(cargo-ai orchestration run download-outputs \
--workflow-uuid "$WF_UUID" --output-node-slug action --format json | jq -r '.url')" \
> /tmp/quickstart-outputs.json
# 3. Show the table (the file holds ALL of the workflow's runs — filter by _uuid;
# each row's .output is the leads array directly, fields are snake_case)
jq -r --arg u "$RUN_UUID" \
'[.[] | select(._uuid==$u)][0].output[] | [.full_name, .job_title, .company_name, (.recently_hired // false)] | @tsv' \
/tmp/quickstart-outputs.json | head -25Show the table (name · title · company · recently-hired), not the raw JSON. recently_hired: true rows are the demo's headline — lead with them ("6 of these 25 just started the job — the exact moment to reach out").
Fallback ladder (on auth/error, drop a rung — don't stop)
salesNavigator.searchLeads(0.2/record) — primary.theirStack.searchJobs(0.5/record) — reframe as "companies hiring your persona right now" (job postings for the persona's title). Same wow, different angle.waterfall.searchProspects(3/record) — exceeds the ~5-credit demo cap, so this rung asks first: "The two cheap sources aren't connected; I can pull 5 matches via waterfall for ~15 credits instead — run it, or connect Sales Navigator first (free)?" Run only on an explicit yes, withlimitcapped at 5.- Nothing connected at all → run the free path:
cargo-ai connection integration list | head, show what could be wired, and offer to connect one (browser auth) — the demo resumes after.
The receipt (mandatory, verbatim discipline)
The demo is itself the pilot from `../cargo-gtm/references/cost-discipline.md`. Close it with a receipt:
- Credits spent + balance remaining (
cargo-ai billing subscription get— remaining =subscriptionAvailableCreditsCount + additionalAvailableCreditsCount − subscriptionCreditsUsedCounton.subscription). For a brand-new account, frame it against the 100 free starting credits rather than as a bare number — "5 spent, 95 of your 100 free credits left" lands very differently from "95 credits remaining". - Hit-rate: "25 of 25 returned" (or what actually came back, and which rows look off).
Minute 3 — save it as a play
Immediately offer to make the pull recurring — this is the step that shows what Cargo is:
"Want this to run by itself? I can save this exact search as a play that runs weekly and writes new matches into a model — new <persona> leads land without you asking."On yes, follow `../cargo-gtm/recipes/save-as-play.md` with the demo's action + filter as the workflow body and a weekly cron.
After the demo — route onward
Propose 2–3 next steps grounded in the rows just pulled, per the next-step spec in `../cargo-gtm/SKILL.md` (§4): e.g. "enrich these 25 with firmographics (~0.5 cr each)", "find + verify emails for the best 10 (~1.4 cr each)", or something else entirely. From here, real GTM work belongs to `cargo-gtm` — read it before anything beyond the demo.

