@clien-ai/mcp 0.3.0 → 0.5.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/CHANGELOG.md ADDED
@@ -0,0 +1,105 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@clien-ai/mcp`.
4
+
5
+ This file starts at 0.5.0. The 0.3.0 and 0.4.0 entries below were reconstructed
6
+ from merge history after the fact and are deliberately terse — they record what
7
+ changed, not the reasoning, which lives in the linked PRs. Versions before 0.3.0
8
+ have no entry; nothing was written down at the time and inventing one now would
9
+ be worse than the gap.
10
+
11
+ The client and the Clien.ai app ship on **independent release cycles**. An
12
+ upgrade here does not imply the deployed app speaks the same shape, and the
13
+ client strips unknown fields by construction — so a field described below only
14
+ reaches you once both sides have shipped.
15
+
16
+ ## 0.5.0
17
+
18
+ The release where **agent-visible output stops being forgeable**.
19
+
20
+ 0.4.0 made the trust spine reach the agent. This one makes what reaches the
21
+ agent trustworthy: every renderer in this package builds line-structured text
22
+ (`- Name (id: uuid)`, `Funding: X [GROUNDED]`) that an agent parses as the
23
+ server's own statements, and until now several of them interpolated untrusted
24
+ values into those lines raw.
25
+
26
+ ### Fixed
27
+
28
+ - **Line-structured forgery, closed across nine renderers** (FUL-253, #493).
29
+ A newline inside an interpolated value ended the line early, and everything
30
+ after it became a line the agent read as the server's own. Untrusted values
31
+ are now whitespace-flattened before rendering, so a crafted forum post cannot
32
+ forge a line that reads as this server's output. The value is still shown in
33
+ full-width — flattening bounds where it can appear, not whether it appears.
34
+
35
+ Covered: `list_community_signals`, `search_forums` (`renderThreads` and
36
+ `renderCompetitors`), `clien_research_status`, `list_personas`,
37
+ `list_interviews`, and the `get_report` trust digest's claim spines, receipt
38
+ lines and robustness rows.
39
+
40
+ The sharpest case was the claim spine, where a newline in a claim's text could
41
+ forge `- [GROUNDED] … ← RRCP-s0` — a receipt for a claim nothing had checked,
42
+ which is the exact invariant the digest exists to hold.
43
+
44
+ ⚠️ The GROUNDED gates deliberately read the **raw** state while the row renders
45
+ the flattened one. Flattening trims, so gating on the flattened value would
46
+ newly admit a padded `" GROUNDED "` as grounded and put a row's badge at odds
47
+ with the tallies, which read raw. Flattening is for the render; it must never
48
+ widen what counts as a receipt. There is a test per spine holding this — the
49
+ two variables are load-bearing, not redundant.
50
+
51
+ - **Receipt quotes are windowed around the verified span** (FUL-252, #492).
52
+ A quote longer than the excerpt cap was clipped from the head, so the span the
53
+ verifier actually grounded could fall outside the text a reader sees — a
54
+ receipt that did not show its own evidence. The excerpt is now centred on the
55
+ span.
56
+
57
+ ⚠️ The span lookup matches the **verifier's** comparison (NFC, case-folded,
58
+ whitespace-collapsed, fuzzy at 0.95), not a case-sensitive `indexOf`. A
59
+ language-default lookup silently re-creates the bug for exactly the claims the
60
+ verifier was most generous about.
61
+
62
+ - `clien_research_status` renders its disambiguators, and `list_competitors`
63
+ bounds its payload (FUL-252, #492). Measured: 20.7 → 15.4 KB at `limit=20`,
64
+ 99.9 → 72.8 KB at `limit=100`.
65
+
66
+ - **`null` is preserved where it means "we asked, the answer is nothing"**
67
+ (FUL-246, #490). Identity-prior fields are now `string | null` rather than
68
+ collapsing to absent. The two are not interchangeable across independent
69
+ release cycles: absent reads as "this deploy never computed it", `null` reads
70
+ as "it computed it and there was nothing." Dropping the distinction made a
71
+ real answer indistinguishable from an old deployment.
72
+
73
+ ### Added
74
+
75
+ - **Fields that previously reached no agent-visible channel are now rendered**
76
+ (FUL-247, #491), with a test guarding that every declared entity field either
77
+ renders or carries a written reason for not doing so.
78
+
79
+ ## 0.4.0
80
+
81
+ The trust spine reaches the agent.
82
+
83
+ - **`_meta` is not a delivery channel** (FUL-243, #482). Hosts are not obliged
84
+ to surface a tool result's `_meta`, and Claude Code drops it outright — so the
85
+ entire Trust Engine was being sent and never read. Trust state is now rendered
86
+ into result **text**. Anything an agent must act on has to appear there.
87
+ - Render-coverage guard: every declared entity field is rendered or allowlisted
88
+ with a reason (FUL-245, #484).
89
+ - Persona identity priors on the read path (FUL-208, #483).
90
+ - Dropped the phantom `Persona.includeInInsights` (FUL-242, #481).
91
+ - In-process single-flight token refresh (FUL-236, #474).
92
+ - Transcript-free interview list via `fields=summary` (FUL-237, #470, #472).
93
+
94
+ ## 0.3.0
95
+
96
+ The agent-first read + update surface — **12 → 20 tools**.
97
+
98
+ - Read tools: `list_interviews`, `get_interview`, `list_personas`, `get_persona`,
99
+ `list_competitors`, `list_community_signals`, `get_project` (#457, #459, #465,
100
+ #466).
101
+ - `update_persona` (#457).
102
+ - `snake_case` parameters with `camelCase` aliases accepted on both spellings
103
+ (#467, #468).
104
+ - Persona and market/competitor trust spine typed into the report schema (#456).
105
+ - Per-tool-call usage telemetry (#455).
package/README.md CHANGED
@@ -53,7 +53,20 @@ Restart Claude Code. First call triggers OAuth.
53
53
 
54
54
  ```jsonc
55
55
  {
56
- "content": [{ "type": "text", "text": "<full markdown report>" }],
56
+ // The text is the full markdown report, followed by a machine-checked
57
+ // TRUST DIGEST (claim states + receipt ids + QA flags + sycophancy signals
58
+ // + robustness). The digest is rendered into the text on purpose: `_meta` is
59
+ // an optional host channel that many hosts — including Claude Code — do not
60
+ // surface to the model, so anything an agent must act on has to be here.
61
+ "content": [{ "type": "text", "text": "<full markdown report>\n\n---\n\n## Trust digest …" }],
62
+ // MCP 2025-06-18 structured results. Declared via `outputSchema` on the
63
+ // read tools, and the channel a host is expected to surface.
64
+ "structuredContent": {
65
+ "job_id": "...",
66
+ "status": "complete",
67
+ "report_data": { /* identical to `_meta.report_data` below */ }
68
+ },
69
+ // Retained unchanged for back-compat with existing consumers.
57
70
  "_meta": {
58
71
  "job_id": "...",
59
72
  "status": "complete",
@@ -85,13 +98,22 @@ the top 3 threats", etc.
85
98
 
86
99
  ### Trust signals
87
100
 
101
+ Every field below is **summarised into the result text** as a trust digest, so an
102
+ agent receives it on any host. The typed fields themselves are in
103
+ `structuredContent.report_data` (and `_meta.report_data`) when you want to read
104
+ them programmatically.
105
+
106
+ When a section is missing, the digest says so explicitly ("NOT PRESENT on this
107
+ run") rather than omitting it — an absent claim spine is not a clean one, and
108
+ silence would read as "nothing to worry about".
109
+
88
110
  `report_data` carries a typed **trust layer** so you can judge how well-evidenced
89
111
  a finding is, rather than taking the prose at face value:
90
112
 
91
113
  | Field | What it tells you |
92
114
  |------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
93
115
  | `claims[]` | Every persona/interview claim with a `state`: `GROUNDED` (span-verified against a cached source quote), `SPECULATION`, or `NO_RECEIPT` (evidence-shaped but unsourced). A `GROUNDED` claim carries a `sourceId` receipt and the `quoteSpan` that grounds it. |
94
- | `personas[].sources[]` | The cached forum posts (`url`, `platform`, `quote`, `retrievedAt`) a claim's `sourceId` (`RCP-p{i}-s{j}`) points at — the receipts. |
116
+ | `personas[].sources[]` | The cached forum posts (`url`, `platform`, `quote`, `retrievedAt`) a claim's `sourceId` (`RCP-p{i}-s{j}`) points at — the receipts. In the digest text each quote is shown as a 200-character excerpt **windowed around the span that grounded the claim**, with a leading `…` when the window starts mid-quote; the untruncated `quote` is in the structured payload. |
95
117
  | `personas[].qaFlagged` / `insufficientEvidence` / `sourcesFound` | Per-persona quality flags: `qaFlagged` means the persona failed a QA check; `insufficientEvidence` / `sourcesFound` tell you whether a `NO_RECEIPT` reflects a weak claim or just a thin evidence base. |
96
118
  | `hypothesisResults[].robustness` | How many reworded re-asks a verdict survived (`survived`/`total`); when `flipped` is true, `downgradedStatus` is the verdict to trust, not the top-level `status`. |
97
119
  | `sycophancySignals` | Anti-sycophancy readout: broken-persona flags (`lowDiscrimination`), per-hypothesis disagreement splits, and explicit `totalRejections`. |
@@ -151,8 +173,8 @@ name — the aliases exist for callers written before the rename.
151
173
 
152
174
  | Tool | Required | Cost | What it does |
153
175
  |------|----------|------|--------------|
154
- | `list_personas` | `project_id` | free | The project's personas, newest first, paginated — including ones created in the web app. The entity list, not the grounding surface. |
155
- | `get_persona` | `persona_id` | free | One persona entity in full. Grounding (`sources[]`, `identityPriors`) lives on `report_data`, via `get_report`. |
176
+ | `list_personas` | `project_id` | free | The project's personas, newest first, paginated — including ones created in the web app. Entries carry read-only `seniority` / `careerPath` when the persona has identity grounding. |
177
+ | `get_persona` | `persona_id` | free | One persona entity in full, including flat read-only `seniority` / `careerPath` when grounded. Forum `sources[]` and `identityProvenance` live on `report_data` via `get_report`, which nests the same two names under `identityPriors`. |
156
178
  | `create_persona` | `project_id`, `name`, `role` | free | Create a persona from fields you already know. No AI, no credit. |
157
179
  | `update_persona` | `persona_id` | free | Correct explicit scalar fields on an existing persona. No AI, no credit. |
158
180
  | `generate_persona` | `project_id`, `name`, `role` | 1 credit | AI-generate a persona from a short brief, grounded by default in real user-voice evidence. A failed generation is never charged. |
@@ -163,7 +185,7 @@ name — the aliases exist for callers written before the rename.
163
185
  | Tool | Required | Cost | What it does |
164
186
  |------|----------|------|--------------|
165
187
  | `interview_persona` | `action` | see note | Stateful multi-turn interview. `action:start` → `turn` (repeatedly) → `complete`, plus `transcript` and `reopen`. Each `turn` generates a real AI reply, metered by your monthly usage; per-turn credit pricing is not yet applied. |
166
- | `list_interviews` | `project_id` | free | The project's interviews, newest first, paginated — recovers ids for interviews started in the web app. |
188
+ | `list_interviews` | `project_id` | free | The project's interviews, newest first, paginated — recovers ids for interviews started in the web app. Entries carry `messageCount`, not transcripts; use `get_interview` for one. |
167
189
  | `get_interview` | `interview_id` | free | One interview's full transcript, from just an id. |
168
190
 
169
191
  ### Reports & collections
@@ -213,7 +235,10 @@ stays discoverable in the web UI.
213
235
 
214
236
  ## Outputs
215
237
 
216
- The tool returns markdown content plus `_meta`:
238
+ The tool returns markdown content — with the trust digest appended to it — plus
239
+ `_meta`. The read tools additionally declare an `outputSchema` and return the
240
+ same payload as `structuredContent`; see
241
+ [What the tool returns](#what-the-tool-returns).
217
242
 
218
243
  | `_meta` field | Type | Notes |
219
244
  |--------------------|-----------------|-------------------------------------------------------------------------------------|
@@ -261,7 +286,7 @@ npx @clien-ai/mcp logout --json
261
286
  # Snapshot of credentials state without triggering OAuth.
262
287
  npx @clien-ai/mcp status
263
288
 
264
- # @clien-ai/mcp v0.1.0
289
+ # @clien-ai/mcp v0.3.0
265
290
  #
266
291
  # Backend: file
267
292
  # Has token: yes
@@ -16,6 +16,7 @@
16
16
  import { createServer, } from 'node:http';
17
17
  import { URL, URLSearchParams } from 'node:url';
18
18
  import { z } from 'zod';
19
+ import { createSingleFlight } from '../util/single-flight.js';
19
20
  import { generatePkcePair, generateState, } from './pkce.js';
20
21
  // 30 seconds. Token endpoint should respond within a few hundred ms; longer
21
22
  // means hung. Single bound covers both the network-issue case (#173) and the
@@ -413,6 +414,26 @@ export async function ensureSession(opts) {
413
414
  /** Build the externally-visible Session object backed by mutable token state. */
414
415
  function makeSession(initial, opts) {
415
416
  const state = { current: initial };
417
+ // FUL-236: in-process single-flight over the whole refresh sequence.
418
+ //
419
+ // `get_project` fans out SIX parallel bearer reads over this one Session. On
420
+ // an expired access token every leg 401s and calls refresh(); without this,
421
+ // each leg would take `withTokenLock` in turn and burn its own token
422
+ // round-trip — six sequential lock acquisitions, and six presentations of a
423
+ // refresh token the server rotates on every use (the shape the reload-on-
424
+ // already-used retry exists to recover from). Collapsed here, exactly one
425
+ // refresh runs and the other five join it.
426
+ //
427
+ // Scoped to this closure, so it lives and dies with the Session object: an
428
+ // `invalidateSession()` that rebuilds the session starts with an empty slot,
429
+ // and tests constructing a fresh session start cold.
430
+ //
431
+ // ⚠️ This sits ABOVE `withTokenLock`, deliberately. The disk lock coordinates
432
+ // separate PROCESSES sharing `~/.clien-ai/tokens.json.enc` and is still
433
+ // required; single-flight only collapses callers inside THIS process. The
434
+ // lock is inside the flight body so the six callers stop queueing on lock
435
+ // acquisition too, not just on the fetch.
436
+ const refreshFlight = createSingleFlight();
416
437
  return {
417
438
  get accessToken() {
418
439
  return state.current.accessToken;
@@ -421,49 +442,58 @@ function makeSession(initial, opts) {
421
442
  return state.current.refreshToken;
422
443
  },
423
444
  async refresh() {
424
- const fresh = await opts.withTokenLock(async () => {
425
- // Re-read disk inside the lock so a peer's recent rotation wins
426
- // over our (potentially stale) in-memory copy.
427
- const current = (await opts.loadRefreshToken()) ?? state.current.refreshToken;
428
- try {
429
- const refreshed = await refreshAccessToken(opts.config, current);
430
- await opts.saveRefreshToken(refreshed.refreshToken);
431
- return refreshed;
445
+ const fresh = await refreshFlight.run(async () => {
446
+ const rotated = await refreshSequence();
447
+ // Assigned inside the flight body so it happens exactly once, before
448
+ // any joining caller resumes — not once per caller.
449
+ state.current = rotated;
450
+ return rotated;
451
+ });
452
+ return fresh.accessToken;
453
+ },
454
+ };
455
+ /** The load -> refresh -> save sequence, under the cross-process lock. */
456
+ async function refreshSequence() {
457
+ return opts.withTokenLock(async () => {
458
+ // Re-read disk inside the lock so a peer's recent rotation wins
459
+ // over our (potentially stale) in-memory copy.
460
+ const current = (await opts.loadRefreshToken()) ?? state.current.refreshToken;
461
+ try {
462
+ const refreshed = await refreshAccessToken(opts.config, current);
463
+ await opts.saveRefreshToken(refreshed.refreshToken);
464
+ return refreshed;
465
+ }
466
+ catch (err) {
467
+ // Bubble transient errors WITHOUT clearing storage — same guard as
468
+ // ensureSession to avoid wiping a still-valid token on a network blip.
469
+ if (err instanceof OAuthError && err.code === 'oauth_network_error') {
470
+ throw err;
432
471
  }
433
- catch (err) {
434
- // Bubble transient errors WITHOUT clearing storage — same guard as
435
- // ensureSession to avoid wiping a still-valid token on a network blip.
436
- if (err instanceof OAuthError && err.code === 'oauth_network_error') {
437
- throw err;
438
- }
439
- if (isAlreadyUsedError(err)) {
440
- const reloaded = await opts.loadRefreshToken();
441
- if (reloaded && reloaded !== current) {
442
- try {
443
- const refreshed = await refreshAccessToken(opts.config, reloaded);
444
- await opts.saveRefreshToken(refreshed.refreshToken);
445
- return refreshed;
446
- }
447
- catch (retryErr) {
448
- if (retryErr instanceof OAuthError && retryErr.code === 'oauth_network_error') {
449
- throw retryErr;
450
- }
451
- // fall through to clearTokens
472
+ if (isAlreadyUsedError(err)) {
473
+ const reloaded = await opts.loadRefreshToken();
474
+ if (reloaded && reloaded !== current) {
475
+ try {
476
+ const refreshed = await refreshAccessToken(opts.config, reloaded);
477
+ await opts.saveRefreshToken(refreshed.refreshToken);
478
+ return refreshed;
479
+ }
480
+ catch (retryErr) {
481
+ if (retryErr instanceof OAuthError && retryErr.code === 'oauth_network_error') {
482
+ throw retryErr;
452
483
  }
484
+ // fall through to clearTokens
453
485
  }
454
486
  }
455
- // Genuinely revoked refresh token — clear stored credentials so
456
- // the next ensureSession run doesn't reload the same dead token
457
- // and burn another round-trip. Symmetric with ensureSession's
458
- // step-2 path. Best-effort: an unwritable HOME shouldn't mask
459
- // the original refresh failure.
460
- await opts.clearTokens().catch(() => { });
461
- throw err;
462
487
  }
463
- });
464
- state.current = fresh;
465
- return fresh.accessToken;
466
- },
467
- };
488
+ // Genuinely revoked refresh token — clear stored credentials so
489
+ // the next ensureSession run doesn't reload the same dead token
490
+ // and burn another round-trip. Symmetric with ensureSession's
491
+ // step-2 path. Best-effort: an unwritable HOME shouldn't mask
492
+ // the original refresh failure.
493
+ await opts.clearTokens().catch(() => { });
494
+ throw err;
495
+ }
496
+ });
497
+ }
468
498
  }
469
499
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/auth/oauth.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -14,6 +14,7 @@ import { ensureSession, } from './auth/oauth.js';
14
14
  import { clearTokens, loadRefreshToken, saveRefreshToken, withTokenLock, } from './auth/storage.js';
15
15
  import { ToolError } from './tools/errors.js';
16
16
  import { TOOLS } from './tools/registry.js';
17
+ import { createSingleFlight } from './util/single-flight.js';
17
18
  function log(...args) {
18
19
  // stderr only — stdout is the MCP transport.
19
20
  console.error('[clien-mcp]', ...args);
@@ -46,19 +47,35 @@ export function createMcpServer() {
46
47
  // gymnastics. In production we only ever construct one server per process
47
48
  // (`startStdioServer`), so behavior is identical.
48
49
  let cachedSession = null;
50
+ // FUL-236, same hazard one level up from `Session.refresh()`: the MCP SDK
51
+ // dispatches `tools/call` requests concurrently, so two tool calls arriving
52
+ // on a COLD cache would both see `cachedSession === null` and both run
53
+ // `ensureSession` — two refreshes of a rotating refresh token, the second of
54
+ // which lands on the `invalid_grant` reload-and-retry path. Collapsing them
55
+ // means the second call joins the first build.
56
+ //
57
+ // Unlike the refresh flight this one also has a cache in front of it, so the
58
+ // steady state (`cachedSession` set) never reaches the flight at all.
59
+ const sessionFlight = createSingleFlight();
49
60
  async function getSession() {
61
+ // No re-check of `cachedSession` inside the flight body: `run` invokes its
62
+ // callback SYNCHRONOUSLY, so there is no async gap between the miss above
63
+ // and the build below in which the cache could have been filled.
50
64
  if (cachedSession)
51
65
  return cachedSession;
52
- const opener = await defaultBrowserOpener();
53
- cachedSession = await ensureSession({
54
- config,
55
- loadRefreshToken,
56
- saveRefreshToken,
57
- clearTokens,
58
- openBrowser: opener,
59
- withTokenLock,
66
+ return sessionFlight.run(async () => {
67
+ const opener = await defaultBrowserOpener();
68
+ const session = await ensureSession({
69
+ config,
70
+ loadRefreshToken,
71
+ saveRefreshToken,
72
+ clearTokens,
73
+ openBrowser: opener,
74
+ withTokenLock,
75
+ });
76
+ cachedSession = session;
77
+ return session;
60
78
  });
61
- return cachedSession;
62
79
  }
63
80
  // Invalidate the in-memory session so the next tool call rebuilds it from
64
81
  // disk. Called from the polling loop when a 401 indicates server-side
@@ -68,11 +85,16 @@ export function createMcpServer() {
68
85
  cachedSession = null;
69
86
  }
70
87
  const server = new Server({ name: PACKAGE_NAME, version: PACKAGE_VERSION }, { capabilities: { tools: {} } });
88
+ // `outputSchema` is spread conditionally rather than set to `undefined`:
89
+ // advertising an explicit `outputSchema: undefined` on the 11 tools that have
90
+ // none would serialise the key on the wire, and a client is entitled to read a
91
+ // present-but-empty schema differently from an absent one.
71
92
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
72
93
  tools: TOOLS.map((tool) => ({
73
94
  name: tool.name,
74
95
  description: tool.description,
75
96
  inputSchema: tool.jsonSchema,
97
+ ...(tool.outputSchema ? { outputSchema: tool.outputSchema } : {}),
76
98
  })),
77
99
  }));
78
100
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -120,9 +142,15 @@ export function createMcpServer() {
120
142
  onProgress,
121
143
  invalidateSession,
122
144
  });
145
+ // FUL-243: `structuredContent` is the MCP 2025-06-18 machine-readable
146
+ // result channel — unlike `_meta`, a host is expected to surface it. It is
147
+ // populated by `defineTool` for exactly the tools that declare an
148
+ // `outputSchema`, so this passes through whatever the registry produced
149
+ // and never invents one. `_meta` is still sent unchanged for back-compat.
123
150
  return {
124
151
  content: result.content,
125
152
  _meta: result._meta,
153
+ ...(result.structuredContent ? { structuredContent: result.structuredContent } : {}),
126
154
  };
127
155
  }
128
156
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}