@llamaventures/cli 1.17.2 → 1.18.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.
package/AGENT_BRIEFING.md CHANGED
@@ -29,6 +29,7 @@ This npm package is public, but Llama OS skills are private. Do not assume the s
29
29
  - Use `llama agent-onboard` or MCP `agent_briefing` for the server-owned Agent Runtime Contract. The npm-bundled text is fallback only.
30
30
  - Use `llama skills search "<task>"` or MCP `skills_search` before choosing a Llama workflow.
31
31
  - Use `llama skills show <slug>` or MCP `skills_read` only for the relevant skill.
32
+ - Use `llama activity new-deals|updated-deals` or MCP `activity_query` before scanning raw deal timelines for recent portfolio movement.
32
33
  - Use `llama explain <command-url-or-object>` or MCP `object_inspect` for 404s, deleted wiki pages, notifier links, deal URLs, and unknown Command objects before telling the user "the system is broken."
33
34
 
34
35
  The boundary matters: public CLI/MCP discovers skills, but authenticated Command decides which skill content the token may read.
@@ -296,7 +297,7 @@ Run `llama --help` for the full surface (~40 commands).
296
297
 
297
298
  ## MCP-native agents
298
299
 
299
- If you support [MCP](https://modelcontextprotocol.io), **prefer the MCP server over parsing CLI output.** The same package ships `llama-mcp` (56 typed tools, identical auth chain).
300
+ If you support [MCP](https://modelcontextprotocol.io), **prefer the MCP server over parsing CLI output.** The same package ships `llama-mcp` (59 typed tools, identical auth chain).
300
301
 
301
302
  Add to your MCP client config (Claude Desktop / Claude Code / Cursor / OpenClaw / Codex / etc.):
302
303
 
@@ -309,6 +310,7 @@ Tools available:
309
310
  - `auth_status` — verify creds + identity (call first if anything 401s)
310
311
  - `agent_bootstrap` — fetch the live Command + Llama OS runtime manifest
311
312
  - `skills_search` / `skills_read` — discover and read authenticated runtime skills
313
+ - `activity_query` — query new deals and meaningful updates without scanning raw timelines
312
314
  - `object_inspect` — explain Command URLs, 404s, deleted objects, and lifecycle trail
313
315
  - `deal_search` / `deal_show` / `deal_create` / `deal_update`
314
316
  - `brief_blocks` / `brief_add_text` / `brief_add_link` / `brief_add_callout`
package/CHANGELOG.md CHANGED
@@ -6,6 +6,26 @@ this project adheres to [Semantic Versioning](https://semver.org).
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.18.0] - 2026-07-06
10
+
11
+ ### Added
12
+ - `llama activity new-deals|updated-deals|events` plus MCP `activity_query`
13
+ for agent-friendly reads over Command's curated activity projection. Agents
14
+ can ask for recent deal creations or meaningful deal updates without scanning
15
+ raw timelines or event-bus payloads.
16
+
17
+ ## [1.17.3] - 2026-07-01
18
+
19
+ ### Changed
20
+ - README (en + zh) condensed to the essentials — install, auth, AI-system
21
+ integration, CLI/MCP quick reference, external pitch; removed the
22
+ architecture diagram and marketing filler.
23
+ - Security reporting now goes through GitHub private vulnerability reporting
24
+ instead of a personal email (README, SECURITY.md, CONTRIBUTING.md).
25
+ - npm tarball trimmed to runtime files (bin/, lib/, agent briefing,
26
+ changelog, READMEs, license) — repo docs and CI test assets are no longer
27
+ published. 18 → 14 files.
28
+
9
29
  ## [1.17.2] - 2026-07-01
10
30
 
11
31
  ### Changed
@@ -480,7 +500,10 @@ assistant-drafted (🤖) and enforces the AI trust ceiling.
480
500
 
481
501
  ---
482
502
 
483
- [Unreleased]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.1...HEAD
503
+ [Unreleased]: https://github.com/Llama-Ventures/llama-cli/compare/v1.18.0...HEAD
504
+ [1.18.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.3...v1.18.0
505
+ [1.17.3]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.2...v1.17.3
506
+ [1.17.2]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.1...v1.17.2
484
507
  [1.17.1]: https://github.com/Llama-Ventures/llama-cli/compare/v1.17.0...v1.17.1
485
508
  [1.17.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.16.0...v1.17.0
486
509
  [1.16.0]: https://github.com/Llama-Ventures/llama-cli/compare/v1.15.1...v1.16.0
package/README.md CHANGED
@@ -6,17 +6,15 @@
6
6
 
7
7
  <p align="center">
8
8
  <strong>The Llama Ventures CLI &amp; MCP server.</strong><br/>
9
- One <code>npm install</code>, one auth chain, two interfaces — humans and AI agents
10
- talk to <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>
11
- through the same client.
9
+ One package, two binaries: <code>llama</code> the CLI for humans and scripts
10
+ and <code>llama-mcp</code> — a stdio MCP server with 59 typed tools for any
11
+ MCP-native agent. Both share the same auth chain, HTTP client, and error
12
+ format, and talk to <a href="https://command.llamaventures.vc">command.llamaventures.vc</a>.
12
13
  </p>
13
14
 
14
15
  <p align="center">
15
16
  <a href="https://www.npmjs.com/package/@llamaventures/cli"><img alt="npm" src="https://img.shields.io/npm/v/@llamaventures/cli?label=npm&color=cb3837&logo=npm&logoColor=white"></a>
16
17
  <a href="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/Llama-Ventures/llama-cli/actions/workflows/ci.yml/badge.svg"></a>
17
- <a href="https://docs.npmjs.com/trusted-publishers"><img alt="Provenance" src="https://img.shields.io/badge/provenance-signed-2e8b57?logo=npm"></a>
18
- <a href="https://nodejs.org/"><img alt="Node" src="https://img.shields.io/node/v/@llamaventures/cli?color=339933&logo=nodedotjs&logoColor=white"></a>
19
- <a href="https://modelcontextprotocol.io"><img alt="MCP 2024-11-05" src="https://img.shields.io/badge/MCP-2024--11--05-7d3aed"></a>
20
18
  <a href="LICENSE"><img alt="License: MIT" src="https://img.shields.io/badge/license-MIT-blue.svg"></a>
21
19
  </p>
22
20
 
@@ -28,309 +26,111 @@
28
26
  <a href="#install">Install</a> ·
29
27
  <a href="#authenticate">Authenticate</a> ·
30
28
  <a href="#integrate-your-ai-system">Integrate your AI</a> ·
31
- <a href="#cli-tour">CLI</a> ·
29
+ <a href="#cli">CLI</a> ·
32
30
  <a href="#mcp-server">MCP</a> ·
33
- <a href="#external-pitch-no-llama-account-required">External pitch</a> ·
34
- <a href="AGENT_BRIEFING.md">Agent briefing</a> ·
35
- <a href="SECURITY.md">Security</a> ·
31
+ <a href="#external-pitch--no-llama-account-required">External pitch</a> ·
36
32
  <a href="CHANGELOG.md">Changelog</a>
37
33
  </p>
38
34
 
39
- > **Public source for low-friction install. Not an open-source product.**
40
- > Most operations require a Llama Ventures team account
41
- > ([gavin@llamaventures.vc](mailto:gavin@llamaventures.vc) mints tokens). The one
42
- > exception is the **public `pitch`** family — see
43
- > [External pitch](#external-pitch-no-llama-account-required).
44
-
45
- ---
46
-
47
- ## What's in the box
48
-
49
- ```
50
- @llamaventures/cli
51
- ├── bin/llama interactive CLI for humans + bash
52
- └── bin/llama-mcp stdio MCP server, 58 typed tools — for any MCP-native agent
53
- ```
54
-
55
- Both binaries share `lib/client.mjs` — the **same** auth chain, **same** HTTP
56
- client, **same** error format. CLI and MCP can never drift on transport or
57
- identity. Zero runtime dependencies for the CLI itself; the bundled MCP
58
- server depends only on `@modelcontextprotocol/sdk` (Anthropic-maintained,
59
- pinned exact).
60
-
61
- ```mermaid
62
- flowchart LR
63
- Human([🧑‍💻 Human]) --> CLI[bin/llama<br/>argv parser]
64
- Agent([🤖 MCP-native agent]) --> MCP[bin/llama-mcp<br/>stdio JSON-RPC]
65
- CLI --> Client[lib/client.mjs<br/>auth · fetch · errors]
66
- MCP --> Client
67
- Client -- HTTPS --> API[(command.llamaventures.vc)]
68
- classDef src fill:#dcfce7,stroke:#166534,color:#14532d
69
- classDef edge fill:#dbeafe,stroke:#1e40af,color:#1e3a8a
70
- class Human,Agent edge
71
- class CLI,MCP,Client src
72
- ```
73
-
74
- ---
35
+ > **Public source for low-friction install not an open-source product.**
36
+ > Most operations require a Llama Ventures team account (tokens are minted by
37
+ > the team admin at `/settings/tokens`). The one exception is the public
38
+ > [`pitch`](#external-pitch--no-llama-account-required) family.
75
39
 
76
40
  ## Install
77
41
 
78
42
  ```bash
79
- npm i -g @llamaventures/cli
80
- ```
81
-
82
- Requires **Node 18+** (uses native `fetch` and ESM). CI runs the matrix on 18 / 20 / 22.
83
-
84
- Verify:
85
-
86
- ```bash
43
+ npm i -g @llamaventures/cli # Node 18+; also puts `llama-mcp` on your PATH
87
44
  llama --version
88
- llama auth status # round-trips against /api/me
45
+ llama auth status # round-trips against /api/me
89
46
  ```
90
47
 
91
- The same install puts `llama-mcp` on your `PATH` for the MCP server — no second package.
92
-
93
- ---
94
-
95
48
  ## Authenticate
96
49
 
97
- The client tries credentials **in this order**, on every call:
98
-
99
- | # | Source | Header sent | Best for |
100
- |---|--------|-------------|----------|
101
- | 1 | `llama auth login` (OAuth 2.1, OS Keychain) | `Authorization: Bearer …` | **Recommended for everyone.** One-shot browser login; tokens auto-refresh and survive reboots. |
102
- | 2 | `gcloud auth print-identity-token` | `Authorization: Bearer …` | Workstations with gcloud already wired (zero config) |
103
- | 3 | `$LLAMA_TOKEN` env var | `X-Llama-Token` | CI runners, sandboxed cloud agents |
104
- | 4 | `~/.llama/token` (mode `0600`) | `X-Llama-Token` | Persistent local install (legacy PATs) |
105
- | 5 | `~/.llama-command/config.json` | `X-Llama-Token` | CLI v0.1 — auto-migrates to `~/.llama/token` |
50
+ Credentials are tried in this order, on every call:
106
51
 
107
- If both Bearer and X-Llama-Token are present, both are sent — the server tries
108
- Bearer first and falls through to X-Llama-Token on verification failure.
109
- Inspect the resolved identity any time with `llama auth status`.
110
-
111
- ### Browser sign-in recommended
112
-
113
- ```bash
114
- llama auth login # opens browser → Google sign-in → consent → done
115
- llama auth status # → activeMethod=oauth, scope, identity
116
- llama deal search acme-ai # ready
117
- ```
118
-
119
- `llama auth login` runs an OAuth 2.1 PKCE + RFC 8252 loopback flow against
120
- `https://command.llamaventures.vc`, exchanges the code for an access + refresh
121
- token pair, and stores them in the OS Keychain (macOS Keychain / Windows
122
- Credential Manager / Linux Secret Service via [`@napi-rs/keyring`](https://www.npmjs.com/package/@napi-rs/keyring)).
123
- Linux containers without libsecret use a 0600-mode file at `~/.llama/oauth.json`
124
- — same posture `gcloud` / `gh` / `aws` ship with on Linux servers. Refresh
125
- tokens rotate transparently when the access token nears expiry; a cross-process
126
- file lock prevents two shells from burning each other's refresh during
127
- concurrent calls.
128
-
129
- `llama auth logout` revokes server-side via RFC 7009 and clears local storage.
130
-
131
- ### gcloud — for machines already wired with `gcloud auth login`
52
+ | # | Source | Best for |
53
+ |---|--------|----------|
54
+ | 1 | `llama auth login` (OAuth, OS keychain, auto-refresh) | **Recommended for everyone** |
55
+ | 2 | `gcloud auth print-identity-token` | Machines already wired with gcloud |
56
+ | 3 | `$LLAMA_TOKEN` env var | CI, sandboxed cloud agents |
57
+ | 4 | `~/.llama/token` (mode `0600`) | Long-lived PATs |
58
+ | 5 | `~/.llama-command/config.json` | v0.1 legacy — auto-migrates |
132
59
 
133
60
  ```bash
134
- gcloud auth login # one-time; pick your @llamaventures.vc account
135
- llama auth status # role + email
136
- llama deal search acme-ai # ready
61
+ llama auth login # browser sign-in; tokens auto-refresh, survive reboots
62
+ llama auth logout # revokes server-side, clears local storage
63
+ llama token set llc_… # PAT from /settings/tokens — validated before it lands on disk
64
+ llama auth status # shows the resolved identity + active method
137
65
  ```
138
66
 
139
- ### Long-lived PATfor CI / unattended environments
140
-
141
- 1. Sign in to https://command.llamaventures.vc.
142
- 2. Open `/settings/tokens` → **Mint Token**.
143
- 3. Save the `llc_…` value:
67
+ > **No account?** Ask your Llama Ventures contact any email address can be
68
+ > granted a token.
144
69
 
145
- ```bash
146
- llama token set llc_paste_token_here
147
- # → writes ~/.llama/token (mode 0600)
148
- # → round-trips /api/me before saving — bad token never lands on disk
149
- ```
150
-
151
- Or, in CI / one-shot environments:
152
-
153
- ```bash
154
- export LLAMA_TOKEN=llc_paste_token_here
155
- ```
70
+ ## Integrate your AI system
156
71
 
157
- > **Don't have an account?** Email
158
- > [gavin@llamaventures.vc](mailto:gavin@llamaventures.vc). Any emailincluding
159
- > non-`@llamaventures.vc` can be granted a token; the system admin
160
- > mints it via `/settings/tokens`. Token first-use auto-creates the user row.
72
+ This package is the **supported integration surface** for Llama Command. Wire
73
+ in-house agents and LLM apps through here **not the raw HTTP API**: the
74
+ CLI/MCP layer owns the auth chain, the stable `Error[…]` contract, and
75
+ forward-compatibility ([SemVer](#stability)); raw API routes carry no such
76
+ promise.
161
77
 
162
- ---
78
+ 1. **Credentials** — `llama auth login`, or a PAT via `llama token set` /
79
+ `$LLAMA_TOKEN` for headless systems.
80
+ 2. **Install** — `npm i -g @llamaventures/cli`.
81
+ 3. **Wire it in** — MCP-native agents point at `llama-mcp`
82
+ ([per-client config](#mcp-server)); anything else shells out to `llama …`.
83
+ 4. **Onboard the agent** — run `llama agent-onboard` (or the MCP
84
+ `agent_briefing` prompt) at session start. It returns the server-owned
85
+ Agent Runtime Contract, always in sync with the live server.
86
+ 5. **Verify** — `llama auth status`, then `llama deal search "<anything>"`.
163
87
 
164
- ## Integrate your AI system
88
+ ## CLI
165
89
 
166
- This package is the **supported integration surface** for Llama Command. If
167
- you're wiring an in-house agent, a coding assistant, or any LLM app into the
168
- workbench, come through here — **not the raw HTTP API**. The CLI/MCP layer owns
169
- the auth chain, the stable `Error[…]` contract, and forward-compatibility
170
- across server schema changes ([SemVer](#stability)); raw API routes carry no
171
- such promise and can change without notice.
172
-
173
- The five-minute path:
174
-
175
- 1. **Get credentials** — a team account signs in with `llama auth login`; for
176
- headless systems, have the admin mint a PAT at
177
- [`/settings/tokens`](https://command.llamaventures.vc/settings/tokens) and
178
- set it via `llama token set` or `$LLAMA_TOKEN`.
179
- 2. **Install** — `npm i -g @llamaventures/cli` (Node 18+).
180
- 3. **Wire it in:**
181
- - **MCP-native agent** (Claude, Cursor, any stdio client) → point it at
182
- `llama-mcp`: 58 typed tools, no generic passthrough.
183
- See [MCP server](#mcp-server) for per-client config.
184
- - **Anything else** → shell out to `llama …`. Output is agent-friendly
185
- plain text; failures use the stable
186
- [`Error[…]` prefixes](#error-codes--for-agents).
187
- 4. **Onboard the agent** — have it run `llama agent-onboard` (or fetch the MCP
188
- `agent_briefing` prompt) at session start. It returns the **server-owned
189
- Agent Runtime Contract** — current workflow rules, attribution grammar,
190
- error recovery — always in sync with the live server, so this README never
191
- becomes your integration bottleneck.
192
- 5. **Verify** — `llama auth status` round-trips the resolved identity;
193
- `llama deal search "<anything>"` proves read access.
194
-
195
- ---
196
-
197
- ## CLI tour
198
-
199
- The CLI is the canonical interface. The HTTP API beneath it is stable, but the
200
- CLI handles auth, error formatting, and forward-compatibility across server
201
- schema changes — **prefer the CLI even from inside scripts.**
90
+ The CLI is the canonical interface it handles auth, error formatting, and
91
+ schema forward-compatibility. Prefer it even from scripts.
202
92
 
203
93
  ```bash
204
- # Auth + tokens
205
- llama auth status
206
- llama token set <llc_...>
207
- llama token show
208
-
209
- # Pipeline — read
210
- llama deal search "acme ai"
211
- llama deal list --owner alex --status Diligence # same filters as search
94
+ llama deal search "acme ai" # find deals (deal list takes the same filters)
212
95
  llama deal show <dealId>
213
- llama deal feed <dealId> # every contribution, newest first
214
-
215
- # Pipeline write
216
- llama deal create "Acme AI" --description "..." --source alex --source-direction Outbound --status Interested
96
+ llama deal feed <dealId> # every contribution, newest first
97
+ llama activity new-deals --since 24h # recent deal creations
98
+ llama activity updated-deals --since 7d # meaningful updates grouped by deal
99
+ llama deal create "Acme AI" --source alex --source-direction Outbound --status Interested
217
100
  llama deal update <dealId> status Diligence
218
- llama deal enrich <dealId> --dry-run
219
- llama deal enrich <dealId> --apply --executor server_agent
220
- llama deal enrich <dealId> --executor external_agent --prompt
221
- llama deal agent run <dealId> --message "collect founder evidence and update typed facts"
222
- llama deal delete <dealId> # soft (audit-logged)
223
- llama deal restore <dealId>
224
-
225
- # Status semantics
226
- # Interested = record/track before outreach, intro, response, deck submission, or meeting.
227
- # Outreached = contact/logged, but no response or effective relationship yet.
228
- # Sourced = response, intro, meeting, or another real relationship signal exists.
229
- # sourceDirection is separate:
230
- # Inbound = came into the firm.
231
- # Outbound = we found/listed/reached out first.
232
-
233
- # Deal Brief — ordered, typed blocks (text · link · embed · callout)
234
- llama brief blocks <dealId>
235
- llama brief add-text <dealId> --heading "..." --body "..."
236
- llama brief add-link <dealId> --url "..." --label "..."
237
- llama brief add-callout <dealId> --tone insight --heading "..." --body "..."
238
- llama brief edit <dealId> <blockId> [--heading ...] [--body ...]
239
- llama brief history <dealId> <blockId>
240
-
241
- # Ownership + approvals
242
- llama claim <dealId>
243
- llama nominate <dealId> --user <userId>
244
- llama approvals list
245
- llama approvals decide <approvalId> approved --note "..."
246
-
247
- # Timeline + posts
248
- llama timeline <dealId>
249
- llama post <dealId> "message body" [--link url]
250
-
251
- # Agent runtime — live Command + private Llama OS skill gateway
252
- llama agent bootstrap
253
- llama skills search "wiki delete tombstone"
254
- llama skills show llama-command
255
- llama explain https://command.llamaventures.vc/wiki/some-page
256
- llama eval bad --last --reason "missed the llamaos weekly note"
257
- llama eval add "last week llama dev weekly" --expect wiki:llamaos-weekly-2026-06-17
258
-
259
- # Wiki
101
+ llama post <dealId> "note body"
102
+ llama brief add-text <dealId> --heading "..." --body "..."
260
103
  llama wiki search "<query>"
261
- llama wiki read <slug> [--lang en|zh]
262
- # Markdown entry:
263
- llama wiki save <slug> --title "..." --content "..." --sources "url1;url2"
264
- # HTML entry — standalone page at /wiki/<slug> (full-viewport sandboxed iframe):
265
- llama wiki save <slug> --title "..." --file page.html --sources "..." [--content-type html]
266
- # Delete / restore (soft, reversible):
267
- llama wiki delete <slug> [--lang en|zh]
268
- llama wiki restore <slug> [--lang en|zh]
269
-
270
- # Mentions inbox
104
+ llama wiki save <slug> --title "..." --content "..."
271
105
  llama mentions
272
- llama mentions resolve <mentionId>
106
+ llama agent-onboard # server-owned agent workflow contract
273
107
  ```
274
108
 
275
- Run `llama --help` for the group index, or `llama help all` for the full
276
- reference 100+ commands across deals, briefs, facts, ownership, timeline,
277
- wiki, memos, deal-scoped HTML artifacts, mentions, skill corrections, evals,
278
- and admin event feeds. Soft-delete is the default everywhere — every removal
279
- is reversible and audit-logged via `deal_events`.
109
+ Status vocabulary `Interested`: tracked before any contact ·
110
+ `Outreached`: contacted, no response yet · `Sourced`: real relationship
111
+ signal exists. `sourceDirection` is separate: `Inbound` came to the firm,
112
+ `Outbound` we reached out first.
280
113
 
281
- ### Error codes for agents
114
+ Run `llama --help` for the group index, `llama help all` for the full
115
+ reference (100+ commands). Deletes are soft and audit-logged everywhere.
282
116
 
283
- The CLI's stderr exit messages start with stable, parseable prefixes:
117
+ ### Error codes
284
118
 
285
119
  | Prefix | Meaning | Recovery |
286
120
  |--------|---------|----------|
287
- | `Error[NO_AUTH]` | No credentials found anywhere | `gcloud auth login` **or** `llama token set` |
288
- | `Error[UNAUTHORIZED]` | Server rejected the credentials we sent | Token may be revoked / expired / wrong gcloud account |
289
-
290
- The MCP server returns the same prefixes inside `isError: true` content so
291
- agents can pattern-match without parsing prose.
292
-
293
- ---
121
+ | `Error[NO_AUTH]` | No credentials found | `llama auth login` or `llama token set` |
122
+ | `Error[UNAUTHORIZED]` | Server rejected the credentials | Token revoked / expired / wrong account |
294
123
 
295
- ### Golden Query Eval feedback
296
-
297
- The CLI and MCP server send lightweight client telemetry to Command for each
298
- authenticated request: client kind/version, detected agent client, local session
299
- id, normalized command, sanitized args, canonical result ids, status, latency,
300
- and bounded summaries. It records what Llama Command was asked to do, not the
301
- user's private Claude Code/Codex/Cursor conversation or local files.
302
-
303
- Search commands automatically become eval candidates. Agents can mark the latest
304
- result explicitly:
305
-
306
- ```bash
307
- llama eval good --last
308
- llama eval bad --last --reason "wrong top wiki"
309
- llama eval add "AI陪伴" --surface deal --expect deal:<uuid>
310
- ```
311
-
312
- MCP-native agents use `record_eval_feedback` for the same flow.
313
-
314
- ---
124
+ The MCP server returns the same prefixes inside `isError: true` content.
125
+ Authenticated calls send bounded, content-redacted telemetry to Command;
126
+ `llama eval good|bad --last` turns real searches into eval feedback.
315
127
 
316
128
  ## MCP server
317
129
 
318
- The bundled `llama-mcp` is a **stdio Model Context Protocol** server exposing
319
- typed tools that mirror the most-used CLI surface. Every tool is named
320
- and scoped — there is no generic API passthrough, by design (a public-package
321
- escape hatch reachable from a prompt-injectable agent context is exactly the
322
- shape we want to avoid).
323
-
324
- Coverage is grouped around the workflows agents actually need: auth
325
- diagnostics; live agent bootstrap; authenticated Llama OS skill search/read;
326
- Command URL/object inspection; deal search/show/create/update/feed; server-side deal agent runs;
327
- deal enrichment harnesses;
328
- trust-rated facts; brief blocks and version history; wiki read/write/delete/restore;
329
- timeline posts and mentions; skill corrections; refresh triggers; external pitch intake;
330
- memo show/regenerate/save/reset; and deal-scoped HTML docs, versions, bundles, and
331
- restore/reset.
332
-
333
- For the exact live list, smoke-test the server with `tools/list`:
130
+ `llama-mcp` is a stdio Model Context Protocol server exposing 59 typed tools
131
+ that mirror the most-used CLI surface. Every tool is named and scoped — there
132
+ is deliberately no generic API passthrough. Auth is identical to the CLI's
133
+ chain. For the exact live list, pipe `tools/list` through it:
334
134
 
335
135
  ```bash
336
136
  printf '%s\n' \
@@ -340,34 +140,14 @@ printf '%s\n' \
340
140
  | llama-mcp
341
141
  ```
342
142
 
343
- Auth is identical to the CLI's chain (gcloud → `$LLAMA_TOKEN` → `~/.llama/token`).
344
- The `agent_briefing` MCP **prompt** returns the server-owned Agent Runtime
345
- Contract when authenticated, so any new agent loading the server can
346
- self-onboard without leaving the protocol. The bundled
347
- [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is only a fallback if the server
348
- briefing route is temporarily unavailable.
349
-
350
- For current Llama OS skills, use the runtime tools instead of looking for a
351
- local private repo: `agent_bootstrap`, `skills_search`, `skills_read`, and
352
- `object_inspect`. The public npm package does not bundle private skill text;
353
- Command returns only the content visible to the authenticated token.
354
-
355
- ### Wire into your agent
356
-
357
- <details open>
358
- <summary><strong>Claude Desktop</strong> (macOS path shown — Linux/Windows differ)</summary>
143
+ <details>
144
+ <summary><strong>Claude Desktop</strong></summary>
359
145
 
360
- `~/Library/Application Support/Claude/claude_desktop_config.json`:
146
+ `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
361
147
 
362
148
  ```json
363
- {
364
- "mcpServers": {
365
- "llama": { "command": "llama-mcp" }
366
- }
367
- }
149
+ { "mcpServers": { "llama": { "command": "llama-mcp" } } }
368
150
  ```
369
-
370
- Restart Claude Desktop. Tools appear under the 🛠️ menu.
371
151
  </details>
372
152
 
373
153
  <details>
@@ -376,114 +156,64 @@ Restart Claude Desktop. Tools appear under the 🛠️ menu.
376
156
  ```bash
377
157
  claude mcp add llama -- llama-mcp
378
158
  ```
379
-
380
- Or edit `~/.claude/claude.json` directly — same JSON shape as Desktop.
381
- </details>
382
-
383
- <details>
384
- <summary><strong>Cursor</strong></summary>
385
-
386
- `~/.cursor/mcp.json`:
387
-
388
- ```json
389
- {
390
- "mcpServers": {
391
- "llama": { "command": "llama-mcp" }
392
- }
393
- }
394
- ```
395
159
  </details>
396
160
 
397
161
  <details>
398
- <summary><strong>OpenCode / OpenClaw / Codex / arbitrary stdio MCP client</strong></summary>
162
+ <summary><strong>Cursor / any stdio MCP client</strong></summary>
399
163
 
400
- Most clients accept a `command` + `args` pair. Locate the binary
401
- (`which llama-mcp` typically `/usr/local/bin/llama-mcp` or
402
- `~/.npm-global/bin/llama-mcp`) and point the client at it. No protocol
403
- extensions, no transport flags.
164
+ Point the client at the `llama-mcp` binary (`which llama-mcp`). Same JSON
165
+ shape as above; no protocol extensions, no transport flags.
404
166
  </details>
405
167
 
406
- > If you're new and want the agent to onboard itself, run
407
- > `llama agent-onboard` from the CLI or fetch the `agent_briefing` prompt from
408
- > the MCP server. It pulls the Command-owned workflow contract — current CLI
409
- > guidance, attribution grammar, error recovery, and anti-pollution rules.
410
-
411
- ---
168
+ > New agent? `llama agent-onboard` (CLI) or the `agent_briefing` prompt (MCP)
169
+ > pulls the server-owned workflow contract. The bundled
170
+ > [`AGENT_BRIEFING.md`](AGENT_BRIEFING.md) is a fallback copy only.
412
171
 
413
172
  ## External pitch — no Llama account required
414
173
 
415
- If you're a **founder pitching us, an EA, or a prospective hire** without a
416
- Llama Command token, the CLI ships a `pitch` command family (and the parallel
417
- `pitch_*` MCP tools) that talks to our public intake agent at
418
- [command.llamaventures.vc/external-agent](https://command.llamaventures.vc/external-agent).
419
- Same conversation, same structured 12-dimension verdict — driven from your
420
- terminal or your own AI agent.
174
+ Founders, EAs, and prospective hires can pitch without a token: the `pitch`
175
+ commands (and `pitch_*` MCP tools) talk to our public intake agent the same
176
+ structured 12-dimension intake as the
177
+ [web version](https://command.llamaventures.vc/external-agent), driven from
178
+ your terminal or your own AI agent.
421
179
 
422
180
  ```bash
423
181
  llama pitch start --name "Jane Doe" --email "jane@acme.ai"
424
182
  llama pitch say "We're building an AI dev tool for X..."
425
183
  llama pitch upload ./deck.pdf
426
- llama pitch # interactive REPL
184
+ llama pitch # interactive REPL
427
185
  ```
428
186
 
429
- Server-enforced rate limits apply (per-IP, per-email, per-session). If you
430
- hit a limit, the CLI surfaces the server's response message.
431
-
432
- This is genuine **agent-to-agent**: your AI helps you tell the story, our
433
- intake agent extracts the structured fields and produces the verdict.
434
-
435
- ---
187
+ Server-enforced rate limits apply (per-IP, per-email, per-session).
436
188
 
437
189
  ## Stability
438
190
 
439
- - **Versioning:** [SemVer](https://semver.org). Renaming or removing a CLI
440
- command bumps **major**. Adding a tool, command, or flag bumps minor.
441
- Bugfixes bump patch. The CLI prints `--version`; the MCP server reports
442
- the same value in its `serverInfo`.
443
- - **Backwards compatibility:** The wire format (Bearer / X-Llama-Token) and
444
- the `Error[…]` prefixes are part of the public contract and won't change
445
- inside a major version.
446
- - **Server schema drift:** When the API gains an endpoint, the CLI / MCP gain
447
- a typed wrapper in the next minor release. There is deliberately no raw-API
448
- passthrough — if a wrapper you need hasn't landed yet, open an issue rather
449
- than calling the HTTP API directly.
450
-
451
- See [`CHANGELOG.md`](CHANGELOG.md) for the per-version log.
452
-
453
- ---
191
+ - **[SemVer](https://semver.org).** Renaming/removing a command → major;
192
+ new tool/command/flag minor; fixes → patch.
193
+ - **Public contract:** the wire format (Bearer / X-Llama-Token) and the
194
+ `Error[…]` prefixes don't change inside a major version.
195
+ - **No raw-API passthrough, by design.** If a wrapper you need hasn't landed,
196
+ open an issue instead of calling the HTTP API directly.
454
197
 
455
198
  ## Security
456
199
 
457
- - **`@llamaventures/cli` is published via npm
458
- [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)** — no
459
- `NPM_TOKEN` lives in repo secrets. Each release ships with `--provenance`
460
- (sigstore-signed); the npm registry shows a **Provenance** badge traceable
461
- to the exact GitHub Action workflow + commit.
462
- - **Minimal dependency tree.** The CLI is zero-deps. The MCP server depends
463
- only on `@modelcontextprotocol/sdk`, pinned exact.
464
- - **Branch protection** on `main`; Dependabot, secret scanning, and
465
- push-protection are enabled.
466
- - **Tokens:** stored locally at `~/.llama/token` mode `0600`. Server-side they
467
- are stored as sha256 hashes — plaintext only ever exists in the user's
468
- possession.
200
+ - Published via npm [Trusted Publishers](https://docs.npmjs.com/trusted-publishers)
201
+ (OIDC) with `--provenance` — no npm token exists to leak.
202
+ - Zero runtime deps for the CLI; the MCP server depends only on
203
+ `@modelcontextprotocol/sdk`, pinned exact.
204
+ - Branch protection, Dependabot, secret scanning, push protection enabled.
205
+ - Tokens: `~/.llama/token` mode `0600` locally; sha256 hashes server-side.
469
206
 
470
- Reporting a vulnerability: see [`SECURITY.md`](SECURITY.md). **Do not** file
471
- public GitHub issues for security bugs.
472
-
473
- ---
207
+ Report vulnerabilities privately via
208
+ [GitHub security advisories](https://github.com/Llama-Ventures/llama-cli/security/advisories/new)
209
+ — not public issues. See [`SECURITY.md`](SECURITY.md).
474
210
 
475
211
  ## Contributing
476
212
 
477
- This is an internal tool maintained by Llama Ventures. PRs from team members
478
- are welcome — see [`CONTRIBUTING.md`](CONTRIBUTING.md) for the local dev loop,
479
- release flow (Trusted Publishers + GitHub Releases), and the conventions we
480
- follow (zero-deps, lockstep CLI/MCP, stable `Error[…]` prefixes).
481
-
482
- External contributions: feel free to open issues for documentation gaps or
483
- broken flows. Feature requests for non-team workflows are best directed at
484
- the [external pitch path](#external-pitch-no-llama-account-required) instead.
485
-
486
- ---
213
+ Internal tool maintained by Llama Ventures; team PRs welcome see
214
+ [`CONTRIBUTING.md`](CONTRIBUTING.md). External: issues for doc gaps and broken
215
+ flows are welcome; to get your company in front of us, use the
216
+ [pitch path](#external-pitch--no-llama-account-required).
487
217
 
488
218
  ## License
489
219