@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.
@@ -25,8 +25,9 @@
25
25
  */
26
26
  import { z } from 'zod';
27
27
  import { ToolError } from './errors.js';
28
- import { apiCall, categorizeFetchError, truncate, } from './research.js';
28
+ import { apiCall, categorizeFetchError, truncate, safeInline, } from './research.js';
29
29
  import { toCompetitorSummary, toCommunitySignalSummary } from './collections.js';
30
+ import { toInterviewSummary } from './interview.js';
30
31
  const PROJECTS_FETCH_TIMEOUT_MS = 30_000;
31
32
  // Caps re-declared locally: the @clien-ai/mcp package is published separately
32
33
  // and cannot import from the Next.js app. Kept in sync with VALIDATION_LIMITS
@@ -155,12 +156,48 @@ export async function listProjects(input, deps) {
155
156
  }
156
157
  else {
157
158
  const lines = projects.map((p) => {
158
- const desc = p.description ? ` — ${truncate(p.description, 100)}` : '';
159
- return `- ${p.name ?? '(unnamed)'} (id: ${p.id ?? 'unknown'})${desc}`;
159
+ // `safeInline` rather than a bare `truncate`: `name` and `description` are
160
+ // user-written free text reaching a LINE-STRUCTURED render, so a newline in
161
+ // either ends the row early and lets the remainder pose as a sibling
162
+ // `- Some Project (id: …)` entry — a project that does not exist, with an id
163
+ // an agent may then pass to a mutation. FUL-247 closed this class in
164
+ // `collections.ts`; this list still had it.
165
+ const name = safeInline(p.name, 100) ?? '(unnamed)';
166
+ const description = safeInline(p.description, 100);
167
+ const desc = description ? ` — ${description}` : '';
168
+ // FUL-252: `list_projects` is the entry point of EVERY session and printed no
169
+ // date at all, so an agent choosing among several projects had no recency
170
+ // signal — the one thing that distinguishes last week's active work from a
171
+ // year-old experiment with a similar name. Placed before the description so
172
+ // the scannable identity of a row (name · id · age) stays together and the
173
+ // free text trails it.
174
+ //
175
+ // ⚠️ Must NOT be inserted between `desc` and `lock`: the FUL-247 lock
176
+ // assertion is deliberately anchored on those two being adjacent, because an
177
+ // aggregate note elsewhere in this output also says LOCKED and a non-row-local
178
+ // expectation passed vacuously once already.
179
+ const createdAt = safeInline(p.createdAt, 40);
180
+ const created = createdAt ? ` — created ${createdAt}` : '';
181
+ // FUL-247: `get_project` renders lock state and this list did not, so an
182
+ // agent picking a project here could not see which ones refuse writes until
183
+ // a mutation came back 403.
184
+ //
185
+ // Only `=== true` prints, unlike `get_project`, and the asymmetry is
186
+ // deliberate rather than an oversight: on a single-entity read "Editable" is
187
+ // one useful line, but on an index of up to 100 rows it is 100 lines saying
188
+ // nothing. The reader needs the exception flagged, not the rule repeated.
189
+ // Correspondingly, ABSENCE of the flag here means "not locked OR not stated"
190
+ // — the closing note says so, so absence is never read as a guarantee.
191
+ const lock = p.isLocked === true ? ' — LOCKED (read-only)' : '';
192
+ return `- ${name} (id: ${safeInline(p.id, 60) ?? 'unknown'})${created}${desc}${lock}`;
160
193
  });
194
+ const lockNote = projects.some((p) => p.isLocked === true)
195
+ ? '\n\nLOCKED projects are read-only (subscription limit) — writes to them will be refused. ' +
196
+ 'No flag means not locked, or not stated by this endpoint; `get_project` is authoritative.'
197
+ : '';
161
198
  const shown = offset + projects.length;
162
199
  const more = shown < total ? `\n\n${total - shown} more not shown — page with offset=${shown}.` : '';
163
- text = `Found ${total} project${total === 1 ? '' : 's'}:\n${lines.join('\n')}${more}`;
200
+ text = `Found ${total} project${total === 1 ? '' : 's'}:\n${lines.join('\n')}${more}${lockNote}`;
164
201
  }
165
202
  return {
166
203
  content: [{ type: 'text', text }],
@@ -338,6 +375,10 @@ const HUB_CHILD_SPECS = {
338
375
  hasTotal: true,
339
376
  supportsOffset: true,
340
377
  listTool: 'list_interviews',
378
+ // FUL-237: ask for `messageCount` instead of the transcripts. This tool
379
+ // already threw the messages away in `toHubItem` — it was paying to read and
380
+ // transfer every word of every interview in the page for a number.
381
+ query: { fields: 'summary' },
341
382
  },
342
383
  competitors: {
343
384
  key: 'competitors',
@@ -449,9 +490,9 @@ function describeFailure(outcome) {
449
490
  *
450
491
  * Competitors and community signals go through U7's mappers so this tool and
451
492
  * `list_competitors` / `list_community_signals` speak ONE vocabulary for the same
452
- * concepts. Interviews are stripped of `messages`: `GET /api/interviews`
453
- * eager-loads `messages(*)`, so inlining a page of them verbatim would return
454
- * every word of every transcript from an orientation call.
493
+ * concepts. Interviews carry `messageCount` and never a transcript: inlining a
494
+ * page of them verbatim would return every word of every interview from an
495
+ * orientation call.
455
496
  */
456
497
  function toHubItem(key, row) {
457
498
  const record = (row !== null && typeof row === 'object' ? row : {});
@@ -460,10 +501,12 @@ function toHubItem(key, row) {
460
501
  return toCompetitorSummary(record);
461
502
  case 'community':
462
503
  return toCommunitySignalSummary(record);
463
- case 'interviews': {
464
- const { messages, ...rest } = record;
465
- return { ...rest, messageCount: Array.isArray(messages) ? messages.length : null };
466
- }
504
+ case 'interviews':
505
+ // Same mapper `list_interviews` uses (FUL-237), for the same reason the
506
+ // competitor and community cases above share theirs: this tool and that
507
+ // one must not report different counts — or different "unknown" sentinels
508
+ // — for one interview.
509
+ return toInterviewSummary(record);
467
510
  case 'personas':
468
511
  case 'reports':
469
512
  return record;
@@ -590,6 +633,8 @@ export async function getProject(input, deps) {
590
633
  // no `pagination`. Sending one would be advertising paging it cannot do.
591
634
  if (spec.supportsOffset)
592
635
  query.set('offset', '0');
636
+ for (const [key, value] of Object.entries(spec.query ?? {}))
637
+ query.set(key, value);
593
638
  return `${spec.path}?${query.toString()}`;
594
639
  };
595
640
  // One parallel round trip for all six reads. `allSettled` is the outer
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import { ListReportsInputSchema, GetReportInputSchema, listReports, getReport, }
22
22
  import { InterviewPersonaInputSchema, INTERVIEW_PERSONA_ALIASES, interviewPersona, ListInterviewsInputSchema, listInterviews, GetInterviewInputSchema, getInterview, } from './interview.js';
23
23
  import { ScanCompetitorsInputSchema, scanCompetitors, SearchForumsInputSchema, searchForums, } from './scoped-research.js';
24
24
  import { ListCompetitorsInputSchema, listCompetitors, ListCommunitySignalsInputSchema, listCommunitySignals, } from './collections.js';
25
+ import { GET_PERSONA_OUTPUT_SCHEMA, GET_REPORT_OUTPUT_SCHEMA, GET_INTERVIEW_OUTPUT_SCHEMA, LIST_PERSONAS_OUTPUT_SCHEMA, LIST_PROJECTS_OUTPUT_SCHEMA, LIST_INTERVIEWS_OUTPUT_SCHEMA, LIST_REPORTS_OUTPUT_SCHEMA, LIST_COMPETITORS_OUTPUT_SCHEMA, LIST_COMMUNITY_SIGNALS_OUTPUT_SCHEMA, } from './output-schemas.js';
25
26
  /**
26
27
  * `paramAliases` defaults to `{}` — a tool with no legacy spellings declares
27
28
  * nothing. The handler is wrapped rather than each tool calling the normalizer
@@ -32,25 +33,54 @@ import { ListCompetitorsInputSchema, listCompetitors, ListCommunitySignalsInputS
32
33
  * ambiguous input surfaces as a REJECTED PROMISE, not a synchronous throw —
33
34
  * `ToolDefinition.handler` promises `Promise<ToolResult>`, and a caller that
34
35
  * relies on `.catch()` rather than try/catch must not be blindsided.
36
+ *
37
+ * The same wrapper also DISCHARGES the `outputSchema` obligation (FUL-243). MCP
38
+ * requires that a tool declaring an `outputSchema` return conforming
39
+ * `structuredContent`; rather than trusting nine handlers to remember, the
40
+ * wrapper fills it from the handler's `_meta` whenever a schema is declared. The
41
+ * two therefore cannot drift: you cannot add a schema and forget the payload, and
42
+ * a tool with no schema never gains a stray structured result.
43
+ *
44
+ * `_meta` is the right source because for every tool that declares a schema it
45
+ * ALREADY holds exactly the structured payload — `structuredContent` is a new
46
+ * delivery channel for it, not new data. `_meta` is left in place unchanged for
47
+ * back-compat with anything already reading it.
48
+ *
49
+ * `?? {}` rather than skipping: a schema-carrying tool that somehow returned no
50
+ * `_meta` must still emit `structuredContent`, and `{}` satisfies every schema
51
+ * here whose `required` fields are all handler-guaranteed. A handler that
52
+ * genuinely cannot produce its payload throws instead, and error results are
53
+ * exempt from the obligation per spec.
35
54
  */
36
55
  function defineTool(def) {
37
56
  const paramAliases = def.paramAliases ?? {};
38
57
  const inner = def.handler;
58
+ const { outputSchema } = def;
39
59
  return {
40
60
  ...def,
41
61
  paramAliases,
42
62
  jsonSchema: zodToInputSchema(def.zodSchema),
43
- handler: async (args, deps) => inner(normalizeParamAliases(args, paramAliases), deps),
63
+ handler: async (args, deps) => {
64
+ const result = await inner(normalizeParamAliases(args, paramAliases), deps);
65
+ if (!outputSchema)
66
+ return result;
67
+ return { ...result, structuredContent: result.structuredContent ?? result._meta ?? {} };
68
+ },
44
69
  };
45
70
  }
46
71
  export const TOOLS = [
47
72
  defineTool({
48
73
  name: 'clien_research',
49
74
  description: 'Run a full product-research pass on an idea — the recommended default for validating ' +
50
- 'a new idea end to end. Returns a markdown report plus structured report_data ' +
51
- '(hypotheses, competitors[], key findings). ' +
52
- 'report_data also carries a typed TRUST layer — read it to judge how well-evidenced a finding ' +
53
- 'is instead of trusting the prose: ' +
75
+ 'a new idea end to end. Returns a markdown report, FOLLOWED IN THE SAME TEXT by a ' +
76
+ 'machine-checked TRUST DIGEST — read the digest rather than trusting the prose. It states ' +
77
+ 'every claim\'s GROUNDED / SPECULATION / NO_RECEIPT state with its receipt id, the separate ' +
78
+ 'market/competitor spine, which personas are ⚠️ QA-FLAGGED, the anti-sycophancy readout, and ' +
79
+ 'which hypothesis verdicts FLIPPED under rephrasing (with the downgraded verdict to act on ' +
80
+ 'instead). When a section is missing the digest says so — absent is not clean. ' +
81
+ 'The full structured report_data (hypotheses, competitors[], key findings) is also in ' +
82
+ '`_meta.report_data` for programmatic use; the digest already carries what you need to reason. ' +
83
+ 'report_data carries this same typed TRUST layer: ' +
54
84
  '(1) `claims[]` — each has a GROUNDED / SPECULATION / NO_RECEIPT state; a GROUNDED claim carries a ' +
55
85
  '`sourceId` of the form "RCP-p{i}-s{j}" that indexes `personas[i].sources[j]` directly, so you can ' +
56
86
  'follow any claim to the exact cached forum post that backs it. NO_RECEIPT can mean a bad claim OR ' +
@@ -102,8 +132,11 @@ export const TOOLS = [
102
132
  description: 'Fetch the current state of an existing `clien_research` job. Use this to ' +
103
133
  'recover a run that disconnected with -32000 mid-flight (the job keeps running ' +
104
134
  'on the backend; this tool re-attaches a read view) and to poll for completion. ' +
105
- 'If the job is complete, returns the full markdown report and structured report_data ' +
106
- 'in the same shape `clien_research` would have returned — no need to call research again. ' +
135
+ 'If the job is complete, returns the full markdown report — followed in the same text by the ' +
136
+ 'same machine-checked TRUST DIGEST `clien_research` renders (claim states + receipt ids, ' +
137
+ 'QA-flagged personas, anti-sycophancy readout, flipped verdicts) — plus structured ' +
138
+ 'report_data in `_meta`, the same shape `clien_research` would have returned. A recovered run ' +
139
+ 'therefore loses none of the trust signal a completed run would have shown. ' +
107
140
  'If the job is still running, returns a brief status summary. If the job failed or ' +
108
141
  'was cancelled, returns the failure reason. ' +
109
142
  'RECOVERY WITHOUT A JOB_ID: if the -32000 drop left you with no job_id, call this tool ' +
@@ -185,11 +218,13 @@ export const TOOLS = [
185
218
  defineTool({
186
219
  name: 'list_projects',
187
220
  description: 'List the caller\'s Clien.ai projects (newest first, paginated). Returns each ' +
188
- 'project\'s name and id as text, plus the raw project array and pagination in ' +
189
- '`_meta`. Use this to find an existing `project_id` to attach a `clien_research` ' +
221
+ 'project\'s name and id as readable text; the raw project array and pagination are ' +
222
+ 'also returned as `structuredContent.projects` / `.pagination` (mirrored in `_meta`). ' +
223
+ 'Use this to find an existing `project_id` to attach a `clien_research` ' +
190
224
  'run to, or to check whether a project already exists before calling `create_project`. ' +
191
225
  'Read-only: no credit cost, no side effects.',
192
226
  zodSchema: ListProjectsInputSchema,
227
+ outputSchema: LIST_PROJECTS_OUTPUT_SCHEMA,
193
228
  handler: (args, deps) => listProjects(args, deps),
194
229
  }),
195
230
  defineTool({
@@ -268,7 +303,10 @@ export const TOOLS = [
268
303
  'quo. Add `company`, `industry`, or `company_size` to pin those yourself, ' +
269
304
  'and `additional_context` (a free-form brief) to steer the persona toward the product/market you ' +
270
305
  'are validating. Set `ephemeral: true` for a scratch persona excluded from the project\'s ' +
271
- 'aggregate insights. Returns the created persona (including its `id`) in `_meta.persona`. ' +
306
+ 'aggregate insights. Returns the GENERATED PROFILE as readable text — name, role, company, ' +
307
+ 'company size, industry, location, and the background paragraph the model wrote — so you can ' +
308
+ 'read what you just paid for without a follow-up `get_persona`. The record is also in ' +
309
+ '`_meta.persona`. ' +
272
310
  'This DEBITS 1 credit per generated persona (the explicit, no-AI `create_persona` is free — use ' +
273
311
  'that when you already know the fields). On insufficient credits the tool returns a clear error ' +
274
312
  'with your balance and a top-up link, and nothing is charged. A failed generation is never ' +
@@ -284,8 +322,9 @@ export const TOOLS = [
284
322
  'the model fills only the fields that are currently BLANK — it never overwrites content you ' +
285
323
  'already entered. To regenerate specific already-populated fields, pass `refresh` (e.g. ' +
286
324
  '["description", "industry"]). Add `additional_context` (a free-form brief) to steer the ' +
287
- 'enrichment toward the product/market you are validating. Returns the updated persona in ' +
288
- '`_meta.persona` and the filled fields in `_meta.enriched`. ' +
325
+ 'enrichment toward the product/market you are validating. Returns the UPDATED PROFILE as ' +
326
+ 'readable text (so you can read the fields the model just filled) plus the list of filled ' +
327
+ 'field names; both are also in `_meta.persona` / `_meta.enriched`. ' +
289
328
  'This DEBITS 1 credit per enrichment (use `create_persona` to set fields explicitly for free, ' +
290
329
  'or `generate_persona` to AI-create a brand-new persona). If nothing is blank and you pass no ' +
291
330
  '`refresh`, it is a no-op and NOTHING is charged. On insufficient credits the tool returns a ' +
@@ -298,28 +337,40 @@ export const TOOLS = [
298
337
  defineTool({
299
338
  name: 'list_personas',
300
339
  description: 'List the personas in a Clien.ai project (newest first, paginated). Returns each ' +
301
- 'persona\'s name, role, and id as text, plus the raw persona array and pagination in ' +
302
- '`_meta.personas` / `_meta.pagination`. Requires a `project_id` — call `list_projects` ' +
340
+ 'persona\'s name, role, and id as readable text; the raw persona array and pagination are ' +
341
+ 'also returned as `structuredContent.personas` / `.pagination` (mirrored in `_meta`). ' +
342
+ 'This list is deliberately one line per persona — call `get_persona` for a full profile. ' +
343
+ 'Requires a `project_id` — call `list_projects` ' +
303
344
  'to find one. This is the KEYSTONE discovery read: it surfaces personas created in the ' +
304
345
  'web app too, so you can get a persona `id` to pass to `get_persona`, `update_persona`, ' +
305
346
  '`enrich_persona`, or `interview_persona` — previously an agent could only reach personas ' +
306
- 'it created in the same session. This is the entity list, NOT the grounding surface: ' +
307
- 'persona forum + identity grounding lives in `report_data` (read it via `get_report`). ' +
347
+ 'it created in the same session. Each entry carries read-only `seniority` / `careerPath` ' +
348
+ 'when the persona has identity grounding; forum sources and `identityProvenance` live in ' +
349
+ '`report_data` (read them via `get_report`). ' +
308
350
  'Read-only: no credit cost, no side effects.',
309
351
  zodSchema: ListPersonasInputSchema,
352
+ outputSchema: LIST_PERSONAS_OUTPUT_SCHEMA,
310
353
  handler: (args, deps) => listPersonas(args, deps),
311
354
  }),
312
355
  defineTool({
313
356
  name: 'get_persona',
314
- description: 'Fetch a single persona by its `persona_id` (from a `list_personas` entry or a persona\'s ' +
315
- '`_meta.persona.id`). Returns a one-line summary as text plus the full persona entity ' +
316
- '(name, role, company, industry, company size, location, background/description, source, ' +
317
- 'lock state) in `_meta.persona`. Use it to inspect a persona before correcting it with ' +
318
- '`update_persona` or interviewing it with `interview_persona`. NOTE: this returns the ' +
319
- 'persona ENTITY, not its grounding — forum `sources[]` and identity grounding ' +
320
- '(`identityPriors` / `identityProvenance`) live on `report_data.personas[]`, read them via ' +
321
- '`get_report`. Read-only: no credit cost, no side effects.',
357
+ description: 'Fetch a single persona by its `persona_id` (from a `list_personas` entry, or the id printed ' +
358
+ 'by `create_persona` / `generate_persona`). Returns the FULL persona profile as readable ' +
359
+ 'text — name, role, company, company size, industry, location, the background/description ' +
360
+ 'paragraph, provenance (`source`), lock state, and the read-only identity priors ' +
361
+ '(`seniority` / `careerPath`) when the persona has them — so you can read the persona you ' +
362
+ 'are about to interview or correct without any further call. The same record is also ' +
363
+ 'returned as `structuredContent.persona` (and mirrored in `_meta.persona`) for programmatic ' +
364
+ 'use. Use it to inspect a persona before correcting it with `update_persona` or ' +
365
+ 'interviewing it with `interview_persona`. TRUST: this is the persona ENTITY. The identity ' +
366
+ 'priors are the ONE piece of grounding it carries (FLAT fields here; `get_report` nests the ' +
367
+ 'same two names under `report_data.personas[].identityPriors`), and they are ' +
368
+ 'aggregate-calibrated, never span-receipted — so they are not evidence you can follow to a ' +
369
+ 'source. Forum receipts (`sources[]`) and `identityProvenance` remain `report_data` only, ' +
370
+ 'read them with `get_report`. Treat every other field here as unverified profile data until ' +
371
+ 'you have checked it there. Read-only: no credit cost, no side effects.',
322
372
  zodSchema: GetPersonaInputSchema,
373
+ outputSchema: GET_PERSONA_OUTPUT_SCHEMA,
323
374
  handler: (args, deps) => getPersona(args, deps),
324
375
  }),
325
376
  defineTool({
@@ -344,41 +395,53 @@ export const TOOLS = [
344
395
  defineTool({
345
396
  name: 'list_reports',
346
397
  description: 'List the caller\'s past `clien_research` runs (newest first, paginated by `limit`). ' +
347
- 'Returns each report\'s prompt, status, and `job_id` as text, plus the raw job array in ' +
348
- '`_meta.jobs`. Optionally scope to one project with `project_id`. Use this to find a ' +
398
+ 'Returns each report\'s prompt, status, and `job_id` as readable text; the raw job array is ' +
399
+ 'also returned as `structuredContent.jobs` (mirrored in `_meta.jobs`). ' +
400
+ 'Optionally scope to one project with `project_id`. Use this to find a ' +
349
401
  'past report to retrieve with `get_report` instead of re-running `clien_research` — ' +
350
402
  're-running spawns a new job and debits credits again for the same idea. Pair with ' +
351
403
  '`get_report` for a free competitor spot-check (read `report_data.competitors[]` from a ' +
352
404
  'recent run; see docs/recipes/competitor-spot-check.md). ' +
353
405
  'Read-only: no credit cost, no side effects.',
354
406
  zodSchema: ListReportsInputSchema,
407
+ outputSchema: LIST_REPORTS_OUTPUT_SCHEMA,
355
408
  handler: (args, deps) => listReports(args, deps),
356
409
  }),
357
410
  defineTool({
358
411
  name: 'get_report',
359
412
  description: 'Retrieve the full report for a past `clien_research` job by its `job_id` (from a prior ' +
360
- 'run\'s `_meta.job_id` or a `list_reports` entry). Returns the markdown report as text ' +
361
- 'plus structured `report_data` (hypotheses, competitors[], key findings) in `_meta` — ' +
362
- 'the same shape `clien_research` returns, including the typed TRUST layer: `claims[]` with ' +
363
- 'GROUNDED / SPECULATION / NO_RECEIPT classifications + `sourceId` receipts (a GROUNDED claim\'s ' +
364
- '"RCP-p{i}-s{j}" sourceId indexes `personas[i].sources[j]`), the SEPARATE `reportClaims[]` ' +
365
- 'market/competitor spine (a GROUNDED claim\'s "RRCP-s{n}" sourceId indexes `reportEvidence[n]`; on ' +
366
- 'this spine a NO_RECEIPT claim with an `attestation` marker reads as "Model-attested" — Claude read ' +
367
- 'a supporting page a check vouched for, no exact quote pinned (its `attestation.sourceId` also ' +
368
- 'indexes `reportEvidence[n]`, but presence never implies grounding — key on `state`) — and ' +
369
- 'otherwise as "from model knowledge — unverified", a figure Claude recalled that was not verified ' +
370
- 'against a source; neither is counted as grounded), ' +
371
- '`personas[].sources[]` + `qaFlagged` (plus the Exa Rail identity grounding: `identityPriors` ' +
372
- 'and `identityProvenance` — a PII-free aggregate calibration line that is NEVER a receipt, unlike ' +
373
- 'the clickable `sources[]`), ' +
374
- '`hypothesisResults[].robustness` survival counts (prefer `downgradedStatus` when `flipped`), and ' +
375
- '`sycophancySignals`. Use this to RETRIEVE past research instead of ' +
413
+ 'run\'s `_meta.job_id`, the job id printed when the run started, or a `list_reports` entry). ' +
414
+ 'Returns the markdown report as text, FOLLOWED BY A MACHINE-CHECKED TRUST DIGEST rendered ' +
415
+ 'into that same text — read the digest rather than trusting the prose. The digest carries: ' +
416
+ '(1) the persona claim spine — every claim\'s GROUNDED / SPECULATION / NO_RECEIPT state with ' +
417
+ 'its "RCP-p{i}-s{j}" receipt id, which resolves in the receipt pool printed below it; ' +
418
+ 'NO_RECEIPT can mean a bad claim OR merely sparse evidence, so check that persona\'s ' +
419
+ '`insufficientEvidence` / `sourcesFound` line before discounting it. ' +
420
+ '(2) the SEPARATE market/competitor spine — same three states, "RRCP-s{n}" receipt ids into ' +
421
+ 'their own evidence pool; a NO_RECEIPT claim marked "model-attested" means a supporting page ' +
422
+ 'was read and independently vouched but no exact span pinned (NOT a receipt), and an unmarked ' +
423
+ 'NO_RECEIPT is recalled model knowledge, unverified. Neither counts as grounded — key on the ' +
424
+ 'state, never on whether a source id is present. ' +
425
+ '(3) per-persona QA — a ⚠️ QA-FLAGGED persona failed a quality check (or could not be checked ' +
426
+ 'at all); do not rely on its claims. Its `identityPriors` (seniority rung, career path) are ' +
427
+ 'typed enrichment and `identityProvenance` is a PII-free aggregate calibration line — NEVER a ' +
428
+ 'receipt, do not cite it as a source. ' +
429
+ '(4) the anti-sycophancy readout — explicit rejection count, `lowDiscrimination` broken-persona ' +
430
+ 'flags, and per-hypothesis disagreement splits. ' +
431
+ '(5) hypothesis robustness — when a verdict FLIPPED under rephrasing the digest names the ' +
432
+ 'downgraded verdict to act on instead of the reported one. ' +
433
+ 'When a section is missing the digest SAYS SO ("NOT PRESENT on this run") — absent is not ' +
434
+ 'clean, so treat the corresponding prose as unverified. The full structured `report_data` ' +
435
+ '(hypotheses, competitors[], key findings, and every field summarised above) is also returned ' +
436
+ 'as `structuredContent.report_data`, mirrored in `_meta.report_data`. ' +
437
+ 'Use this to RETRIEVE past research instead of ' +
376
438
  're-running `clien_research`, which would debit credits again for the same idea. ' +
377
439
  'Backs the competitor spot-check (read `report_data.competitors[]`) and pivot-viability ' +
378
440
  '(compare a pivot\'s report against the original) recipes in docs/recipes/. ' +
379
441
  'If the job is still running or you are unsure of its state, use `clien_research_status`. ' +
380
442
  'Read-only: no credit cost, no side effects.',
381
443
  zodSchema: GetReportInputSchema,
444
+ outputSchema: GET_REPORT_OUTPUT_SCHEMA,
382
445
  handler: (args, deps) => getReport(args, deps),
383
446
  }),
384
447
  defineTool({
@@ -403,55 +466,74 @@ export const TOOLS = [
403
466
  defineTool({
404
467
  name: 'list_interviews',
405
468
  description: 'List the interviews in a Clien.ai project (newest first, paginated). Returns each ' +
406
- 'interview\'s status, persona id, message count, and id as text, plus the raw interview ' +
407
- 'array (with full message transcripts) and pagination in `_meta.interviews` / ' +
408
- '`_meta.pagination`. Requires a `project_id` — call `list_projects` to find one. Use it to ' +
469
+ 'interview\'s status, persona id, message count, and id as readable text; the raw interview ' +
470
+ 'array and pagination are also returned as `structuredContent.interviews` / `.pagination` ' +
471
+ '(mirrored in `_meta`). Entries carry ' +
472
+ '`messageCount`, NOT their message transcripts — a page of full transcripts is a lot of ' +
473
+ 'context for a "which interviews exist?" question; read one with `get_interview`. ' +
474
+ 'Requires a `project_id` — call `list_projects` to find one. Use it to ' +
409
475
  'RECOVER a past interview id (including interviews started in the web app) so you can ' +
410
476
  're-read its transcript with `get_interview` — previously an interview id was only ' +
411
477
  'obtainable from `interview_persona action:start` in the same session. Read-only: no ' +
412
478
  'credit cost, no side effects.',
413
479
  zodSchema: ListInterviewsInputSchema,
480
+ outputSchema: LIST_INTERVIEWS_OUTPUT_SCHEMA,
414
481
  handler: (args, deps) => listInterviews(args, deps),
415
482
  }),
416
483
  defineTool({
417
484
  name: 'get_interview',
418
485
  description: 'Fetch a single interview by its `interview_id` (from a `list_interviews` entry or an ' +
419
- 'interview\'s `_meta.interview.id`). Returns the full message transcript as text plus the ' +
420
- 'interview entity (status, personaId, messages, completedAt) in `_meta.interview`. Use it ' +
486
+ 'interview\'s id printed by `interview_persona action:start`). Returns the full message ' +
487
+ 'transcript as readable text; the interview entity (status, personaId, messages, ' +
488
+ 'completedAt) is also returned as `structuredContent.interview` (mirrored in ' +
489
+ '`_meta.interview`). Use it ' +
421
490
  'to re-read a completed interview without re-running it. This is the read-only twin of ' +
422
491
  '`interview_persona action:transcript`, reachable from just an id. Read-only: no credit ' +
423
492
  'cost, no side effects.',
424
493
  zodSchema: GetInterviewInputSchema,
494
+ outputSchema: GET_INTERVIEW_OUTPUT_SCHEMA,
425
495
  handler: (args, deps) => getInterview(args, deps),
426
496
  }),
427
497
  defineTool({
428
498
  name: 'list_competitors',
429
499
  description: 'List the competitors recorded for a Clien.ai project (most-recently-seen first, ' +
430
- 'paginated). Returns each competitor\'s name, pricing, description, url, and company ' +
431
- 'facts as text, plus the full competitor array and pagination in `_meta.competitors` / ' +
432
- '`_meta.pagination`. Requires a `project_id` — call `list_projects` to find one. ' +
500
+ 'paginated). Returns each competitor\'s name, pricing, description, url, company ' +
501
+ 'facts and strengths/weaknesses as readable text; the full competitor array and ' +
502
+ 'pagination are also returned as `structuredContent.competitors` / `.pagination` ' +
503
+ '(mirrored in `_meta`). ' +
504
+ 'Requires a `project_id` — call `list_projects` to find one. ' +
433
505
  'This reads the project\'s DEDUPED, ACCUMULATED competitor set — merged across every ' +
434
506
  'research run and the web app — so unlike `get_report` (one run\'s view) or ' +
435
507
  '`scan_competitors` (a fresh, credit-debiting scan), it answers "what does this project ' +
436
508
  'already know?" without spending anything. Check here BEFORE running `scan_competitors` ' +
437
509
  'to avoid paying to rediscover competitors you already have. ' +
510
+ // FUL-247: this used to route the reader to the `<fact>Grounding` SIBLING
511
+ // FIELD for trust state — i.e. to `_meta`/`structuredContent`, the channel
512
+ // Claude Code drops. The state is now printed inline in the text, so the
513
+ // description must name the bracket a reader will actually see. A tool
514
+ // description is an executable interface: an agent reads it before its
515
+ // first call and is primed by it.
438
516
  'TRUST: each of the four company facts (`funding`, `employeeCount`, `founded`, ' +
439
- '`hqLocation`) carries its own grounding in the sibling `<fact>Grounding` field ' +
440
- '({ state: GROUNDED | SPECULATION | NO_RECEIPT, sourceUrl?, sourceRetrievedAt? }), ' +
441
- 'persisted in lockstep with the value so it always describes the figure shown. ' +
442
- 'A `null` grounding means no source was attributed — key on `state` and treat anything ' +
443
- 'that is not GROUNDED as unverified; the presence of a grounding object never by itself ' +
444
- 'means the fact is checked. ' +
517
+ '`hqLocation`) is followed IN THE TEXT by its own trust state in brackets — ' +
518
+ '`[GROUNDED]`, `[SPECULATION]`, `[NO_RECEIPT]`, or `[no grounding]` / `[state?]` when no ' +
519
+ 'recognised state was recorded. Read the bracket, not the number: only `[GROUNDED]` means ' +
520
+ 'a source was checked, and the last two are NOT "checked and refuted". Cite only ' +
521
+ '`[GROUNDED]` figures; state the rest as unverified. The same states are available ' +
522
+ 'structurally on the sibling `<fact>Grounding` field ({ state, sourceUrl?, ' +
523
+ 'sourceRetrievedAt? }), persisted in lockstep with the value. Strengths and weaknesses ' +
524
+ 'carry NO grounding of any kind — they are the research agent\'s reading, never receipted. ' +
445
525
  'Read-only: no credit cost, no side effects.',
446
526
  zodSchema: ListCompetitorsInputSchema,
527
+ outputSchema: LIST_COMPETITORS_OUTPUT_SCHEMA,
447
528
  handler: (args, deps) => listCompetitors(args, deps),
448
529
  }),
449
530
  defineTool({
450
531
  name: 'list_community_signals',
451
532
  description: 'List the community signals (forum/Reddit/HN threads) recorded for a Clien.ai project ' +
452
533
  '(newest-discovered first, paginated). Returns each thread\'s title, platform, ' +
453
- 'sentiment summary, url, a representative quote, and engagement as text, plus the full ' +
454
- 'signal array and pagination in `_meta.communitySignals` / `_meta.pagination`. Requires ' +
534
+ 'sentiment summary, url, a representative quote, and engagement as readable text; the full ' +
535
+ 'signal array and pagination are also returned as `structuredContent.communitySignals` / ' +
536
+ '`.pagination` (mirrored in `_meta`). Requires ' +
455
537
  'a `project_id` — call `list_projects` to find one. ' +
456
538
  'This reads the project\'s DEDUPED, ACCUMULATED thread set — merged across every research ' +
457
539
  'run and the web app — so unlike `get_report` (one run\'s view) or `search_forums` (a ' +
@@ -466,6 +548,7 @@ export const TOOLS = [
466
548
  'activity; do not read a thread\'s position as a recency signal. ' +
467
549
  'Read-only: no credit cost, no side effects.',
468
550
  zodSchema: ListCommunitySignalsInputSchema,
551
+ outputSchema: LIST_COMMUNITY_SIGNALS_OUTPUT_SCHEMA,
469
552
  handler: (args, deps) => listCommunitySignals(args, deps),
470
553
  }),
471
554
  ];