@clien-ai/mcp 0.8.0 → 0.9.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/README.md +50 -15
- package/dist/tools/collections.js +296 -10
- package/dist/tools/collections.js.map +1 -1
- package/dist/tools/content-type-display.js +166 -0
- package/dist/tools/content-type-display.js.map +1 -0
- package/dist/tools/engagement-display.js +64 -0
- package/dist/tools/engagement-display.js.map +1 -0
- package/dist/tools/interview-scripts.js +360 -0
- package/dist/tools/interview-scripts.js.map +1 -0
- package/dist/tools/interview.js +28 -3
- package/dist/tools/interview.js.map +1 -1
- package/dist/tools/output-schemas.js +27 -0
- package/dist/tools/output-schemas.js.map +1 -1
- package/dist/tools/personas.js +262 -39
- package/dist/tools/personas.js.map +1 -1
- package/dist/tools/registry.js +279 -30
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/report-digest.js +238 -16
- package/dist/tools/report-digest.js.map +1 -1
- package/dist/tools/reports.js +9 -2
- package/dist/tools/reports.js.map +1 -1
- package/dist/tools/research.js +102 -5
- package/dist/tools/research.js.map +1 -1
- package/dist/tools/scoped-research.js +85 -44
- package/dist/tools/scoped-research.js.map +1 -1
- package/dist/tools/status.js +2 -2
- package/dist/tools/status.js.map +1 -1
- package/dist/types/report.js +211 -9
- package/dist/types/report.js.map +1 -1
- package/package.json +4 -4
package/dist/tools/registry.js
CHANGED
|
@@ -14,15 +14,17 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { zodToInputSchema } from './schema.js';
|
|
16
16
|
import { normalizeParamAliases } from './param-aliases.js';
|
|
17
|
+
import { CONTENT_TYPE_DIGEST_ADVERT, CONTENT_TYPE_EXCLUSIONS, CONTENT_TYPE_STATES, } from './content-type-display.js';
|
|
17
18
|
import { ResearchInputSchema, runResearch } from './research.js';
|
|
18
19
|
import { StatusInputSchema, getResearchStatus } from './status.js';
|
|
19
20
|
import { ListProjectsInputSchema, CreateProjectInputSchema, GetProjectInputSchema, listProjects, createProject, getProject, } from './projects.js';
|
|
20
|
-
import { CreatePersonaInputSchema, CREATE_PERSONA_ALIASES, createPersona, GeneratePersonaInputSchema, GENERATE_PERSONA_ALIASES, generatePersona, EnrichPersonaInputSchema, ENRICH_PERSONA_ALIASES, enrichPersona, ListPersonasInputSchema, listPersonas, GetPersonaInputSchema, getPersona, UpdatePersonaInputSchema, UPDATE_PERSONA_ALIASES, updatePersona, } from './personas.js';
|
|
21
|
+
import { CreatePersonaInputSchema, CREATE_PERSONA_ALIASES, createPersona, GeneratePersonaInputSchema, GENERATE_PERSONA_ALIASES, generatePersona, EnrichPersonaInputSchema, ENRICH_PERSONA_ALIASES, enrichPersona, ListPersonasInputSchema, listPersonas, GetPersonaInputSchema, getPersona, UpdatePersonaInputSchema, UPDATE_PERSONA_ALIASES, updatePersona, UpdatePersonaIdentityPriorsInputSchema, updatePersonaIdentityPriors, } from './personas.js';
|
|
21
22
|
import { ListReportsInputSchema, GetReportInputSchema, listReports, getReport, } from './reports.js';
|
|
22
23
|
import { InterviewPersonaInputSchema, INTERVIEW_PERSONA_ALIASES, interviewPersona, ListInterviewsInputSchema, listInterviews, GetInterviewInputSchema, getInterview, } from './interview.js';
|
|
23
24
|
import { FORUM_SOURCES_ADVERT, ScanCompetitorsInputSchema, scanCompetitors, SearchForumsInputSchema, searchForums, } from './scoped-research.js';
|
|
24
|
-
import { ListCompetitorsInputSchema, listCompetitors, ListCommunitySignalsInputSchema, listCommunitySignals, } from './collections.js';
|
|
25
|
-
import {
|
|
25
|
+
import { ListCompetitorsInputSchema, listCompetitors, ListCommunitySignalsInputSchema, listCommunitySignals, GetMarketInputSchema, getMarket, } from './collections.js';
|
|
26
|
+
import { ListInterviewScriptsInputSchema, listInterviewScripts, } from './interview-scripts.js';
|
|
27
|
+
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, GET_MARKET_OUTPUT_SCHEMA, LIST_INTERVIEW_SCRIPTS_OUTPUT_SCHEMA, } from './output-schemas.js';
|
|
26
28
|
/**
|
|
27
29
|
* `paramAliases` defaults to `{}` — a tool with no legacy spellings declares
|
|
28
30
|
* nothing. The handler is wrapped rather than each tool calling the normalizer
|
|
@@ -68,6 +70,88 @@ function defineTool(def) {
|
|
|
68
70
|
},
|
|
69
71
|
};
|
|
70
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* The open-question wire field is shared by all three full-report tools.
|
|
75
|
+
*
|
|
76
|
+
* Keep this in the advert, not only in `ResearchReportDataSchema`: tool
|
|
77
|
+
* descriptions are what the calling agent reads before a call, while the
|
|
78
|
+
* schema is only a machine contract. The three relevant descriptions are
|
|
79
|
+
* pinned individually in `agent-visible-output.test.ts` so one cannot silently
|
|
80
|
+
* stop advertising the field.
|
|
81
|
+
*/
|
|
82
|
+
const OPEN_QUESTION_STATUSES_ADVERT = 'Its strict `status` is `never_asked`, `nobody_answered`, or `voices_disagreed`. ';
|
|
83
|
+
const HOST_SIDE_OPEN_QUESTIONS_ADVERT = 'The typed `openQuestions[]` field is mirrored for your MCP client at host-side ' +
|
|
84
|
+
'`_meta.report_data.openQuestions`; because host `_meta` is not reliably model-visible, YOU ' +
|
|
85
|
+
'should use the model-visible result text\'s `## Open Questions` section. ' +
|
|
86
|
+
OPEN_QUESTION_STATUSES_ADVERT;
|
|
87
|
+
/**
|
|
88
|
+
* FUL-540, extended by FUL-545. The one fact every ENTITY-side advert for
|
|
89
|
+
* `seniority` / `careerPath` has to carry, in one place so the surfaces cannot
|
|
90
|
+
* drift apart.
|
|
91
|
+
*
|
|
92
|
+
* These columns shipped as pure research output and every advert said so; FUL-488
|
|
93
|
+
* made them editable on the web persona profile, which turned those adverts into a
|
|
94
|
+
* claim that a value a person typed came from a research run.
|
|
95
|
+
*
|
|
96
|
+
* ⚠️ FUL-545 ADDED A THIRD ORIGIN — `update_persona_identity_priors` writes both
|
|
97
|
+
* fields over this server, so the previous wording ("read-only through this
|
|
98
|
+
* server") is retired. The count matters: an advert naming two origins while
|
|
99
|
+
* three exist is the same defect in a smaller costume. Nothing on the row
|
|
100
|
+
* distinguishes them — `personas.authorship` is row-level and its trigger's
|
|
101
|
+
* `UPDATE OF validation_job_id, authorship` column list means a scalar-only
|
|
102
|
+
* write never fires it — so the honest advert states ALL THREE and refuses the
|
|
103
|
+
* field as a signal.
|
|
104
|
+
*
|
|
105
|
+
* ⚠️ Exported for reuse, NOT for the guard to assert against. The FUL-540 tests in
|
|
106
|
+
* `agent-visible-output.test.ts` deliberately match literals: an assertion built
|
|
107
|
+
* from this constant would move with it, so gutting the constant would keep the
|
|
108
|
+
* suite green (the absolute-anchor trap that nearly cost PR #744 a proof). One
|
|
109
|
+
* test pins this text absolutely; every other assertion stays independent of it.
|
|
110
|
+
*
|
|
111
|
+
* `update_persona` deliberately does NOT use this: its sentence is about which
|
|
112
|
+
* TOOL patches these fields, which is a different fact that happens to touch the
|
|
113
|
+
* same two columns.
|
|
114
|
+
*/
|
|
115
|
+
export const IDENTITY_PRIORS_EDITABILITY_ADVERT = 'user-editable in the web app and writable here through ' +
|
|
116
|
+
'`update_persona_identity_priors`, and nothing records whether a given value came from a ' +
|
|
117
|
+
'research run, from an agent, or from a person typing it — so they are not a research signal';
|
|
118
|
+
/**
|
|
119
|
+
* FUL-510. The run-level verdict rationale, advertised on all three tools that return a
|
|
120
|
+
* report, because all three now render it.
|
|
121
|
+
*
|
|
122
|
+
* ⚠️ THE ABSENCE CLAUSE IS THE LOAD-BEARING HALF. The block renders nothing when the run
|
|
123
|
+
* stored no rationale — no placeholder, by design — so a caller only ever learns from this
|
|
124
|
+
* advert that absence is normal and what to do about it. Without that sentence the silent
|
|
125
|
+
* case is precisely where an agent invents a rationale out of the verdict counts, which is
|
|
126
|
+
* the fabrication the producer field exists to prevent (DESIGN.md forbids the web renderer
|
|
127
|
+
* the same move).
|
|
128
|
+
*
|
|
129
|
+
* Everything channel-independent lives here; the typed field's PATH differs per tool, so it
|
|
130
|
+
* is stated by the two wrappers below rather than named once and left unqualified.
|
|
131
|
+
*/
|
|
132
|
+
const VERDICT_RATIONALE_ADVERT_CORE = '1-2 sentences the agent wrote at synthesis time saying WHY the overall verdict came out ' +
|
|
133
|
+
'this way. It is RETRIEVED, not derived — never recompute or paraphrase it from the verdict ' +
|
|
134
|
+
'counts or the confidence number. It is often ABSENT, which is normal and not an error: the ' +
|
|
135
|
+
'run may predate the field, have written none, or have had it withdrawn because a robustness ' +
|
|
136
|
+
're-ask downgraded a verdict it argued for. When it is absent, say no rationale was recorded ' +
|
|
137
|
+
'rather than inferring one. ';
|
|
138
|
+
/** `get_report` returns a declared output schema, so the typed field is model-reachable. */
|
|
139
|
+
const STRUCTURED_VERDICT_RATIONALE_ADVERT = 'When the run wrote one, its own verdict rationale is rendered in the result text under ' +
|
|
140
|
+
'"## Verdict rationale", and typed at `structuredContent.report_data.verdictSummary`: ' +
|
|
141
|
+
VERDICT_RATIONALE_ADVERT_CORE;
|
|
142
|
+
/**
|
|
143
|
+
* `clien_research` / `clien_research_status` carry `report_data` on host-side `_meta` ONLY,
|
|
144
|
+
* which is not reliably model-visible (same split as `HOST_SIDE_OPEN_QUESTIONS_ADVERT`).
|
|
145
|
+
* Pointing a caller at that path unqualified would offer it a channel it may not have; the
|
|
146
|
+
* rendered text is the one it definitely does.
|
|
147
|
+
*/
|
|
148
|
+
const HOST_SIDE_VERDICT_RATIONALE_ADVERT = 'When the run wrote one, its own verdict rationale is rendered in the model-visible result ' +
|
|
149
|
+
'text under "## Verdict rationale" — READ IT THERE. The typed field is mirrored for your MCP ' +
|
|
150
|
+
'client at host-side `_meta.report_data.verdictSummary`, which is not reliably model-visible: ' +
|
|
151
|
+
VERDICT_RATIONALE_ADVERT_CORE;
|
|
152
|
+
const STRUCTURED_OPEN_QUESTIONS_ADVERT = 'The typed `openQuestions[]` field is returned at ' +
|
|
153
|
+
'`structuredContent.report_data.openQuestions`, where it lists what the run did not settle. ' +
|
|
154
|
+
OPEN_QUESTION_STATUSES_ADVERT;
|
|
71
155
|
export const TOOLS = [
|
|
72
156
|
defineTool({
|
|
73
157
|
name: 'clien_research',
|
|
@@ -78,6 +162,12 @@ export const TOOLS = [
|
|
|
78
162
|
'market/competitor spine, which personas are ⚠️ QA-FLAGGED, the anti-sycophancy readout, and ' +
|
|
79
163
|
'which hypothesis verdicts FLIPPED under rephrasing (with the downgraded verdict to act on ' +
|
|
80
164
|
'instead). When a section is missing the digest says so — absent is not clean. ' +
|
|
165
|
+
// FUL-560. `clien_research` renders the SAME digest through `composeReportText`, so it emits
|
|
166
|
+
// the same `source type:` lines and owes the same explanation — an agent that runs the hero
|
|
167
|
+
// tool and never calls `get_report` would otherwise meet the vocabulary for the first time in
|
|
168
|
+
// its own output. Shared constant, not a copy: the wording is pinned across every surface by
|
|
169
|
+
// `content-type-display.test.ts`, which DERIVES the tools owing it from the handler sources.
|
|
170
|
+
`The digest also states ${CONTENT_TYPE_DIGEST_ADVERT} ` +
|
|
81
171
|
'The full structured report_data (hypotheses, competitors[], key findings) is mirrored to ' +
|
|
82
172
|
'host-side `_meta.report_data` for programmatic use by your MCP client; everything YOU need ' +
|
|
83
173
|
'to reason is already in the result text above it. ' +
|
|
@@ -102,14 +192,21 @@ export const TOOLS = [
|
|
|
102
192
|
'indexes `reportEvidence[n]` (its own pool), so a market/competitor figure follows to the cached ' +
|
|
103
193
|
'source page a verbatim span was matched against. On THIS spine a NO_RECEIPT claim carries one of ' +
|
|
104
194
|
'two provenance readings: if it has an `attestation` marker ({sourceId, quote}) it is ' +
|
|
105
|
-
|
|
195
|
+
// FUL-416: "Cited" replaces "Inferred", which replaced the codebase-only word
|
|
196
|
+
// "Model-attested". The badge now answers one question — is there a source behind this? —
|
|
197
|
+
// and a vouched page is a yes. Mirrored verbatim from the app's MODEL_ATTESTED_BADGE_LABEL
|
|
198
|
+
// and the agent's; pinned equal by
|
|
199
|
+
// __tests__/integration/trust-engine/model-knowledge-provenance-coupling.test.ts.
|
|
200
|
+
'"Cited" — Claude read a supporting page and an independent check vouched it supports the ' +
|
|
106
201
|
'figure, though no exact quote could be pinned (stronger than recall, but NOT a verified receipt; ' +
|
|
107
202
|
'its `attestation.sourceId` indexes `reportEvidence[n]` the same way, but a marker\'s presence NEVER ' +
|
|
108
203
|
'implies grounding — key on `state`, not on whether a sourceId is present); ' +
|
|
109
|
-
'otherwise it is "
|
|
204
|
+
'otherwise it is "unsourced": an evidence-shaped figure Claude wrote from ' +
|
|
110
205
|
'its own training knowledge that could not be verified against a source — often directionally right ' +
|
|
111
206
|
'(a recalled analyst estimate), but treat it as unconfirmed, NOT as a checked fact. Neither reading ' +
|
|
112
207
|
'is ever counted as grounded. ' +
|
|
208
|
+
'(6) ' + HOST_SIDE_OPEN_QUESTIONS_ADVERT +
|
|
209
|
+
HOST_SIDE_VERDICT_RATIONALE_ADVERT +
|
|
113
210
|
'Typical wall time 15-25 minutes; progress ' +
|
|
114
211
|
'is streamed via notifications/progress. ' +
|
|
115
212
|
'This hero tool runs the whole curated pipeline in one call. PREFER it over hand-assembling ' +
|
|
@@ -138,10 +235,15 @@ export const TOOLS = [
|
|
|
138
235
|
'on the backend; this tool re-attaches a read view) and to poll for completion. ' +
|
|
139
236
|
'If the job is complete, returns the full markdown report — followed in the same text by the ' +
|
|
140
237
|
'same machine-checked TRUST DIGEST `clien_research` renders (claim states + receipt ids, ' +
|
|
141
|
-
'QA-flagged personas, anti-sycophancy readout, flipped verdicts).
|
|
142
|
-
|
|
238
|
+
'QA-flagged personas, anti-sycophancy readout, flipped verdicts). ' +
|
|
239
|
+
// FUL-560 — third renderer of the same digest; see the note on `clien_research` above.
|
|
240
|
+
`The digest also states ${CONTENT_TYPE_DIGEST_ADVERT} ` +
|
|
241
|
+
'The structured report_data behind that digest is mirrored to host-side `_meta`, the same ' +
|
|
242
|
+
'shape ' +
|
|
143
243
|
'`clien_research` would have returned, but it is the result text you read. A recovered run ' +
|
|
144
244
|
'therefore loses none of the trust signal a completed run would have shown. ' +
|
|
245
|
+
HOST_SIDE_OPEN_QUESTIONS_ADVERT +
|
|
246
|
+
HOST_SIDE_VERDICT_RATIONALE_ADVERT +
|
|
145
247
|
'If the job is still running, returns a brief status summary. If the job failed or ' +
|
|
146
248
|
'was cancelled, returns the failure reason. ' +
|
|
147
249
|
'RECOVERY WITHOUT A JOB_ID: if the -32000 drop left you with no job_id, call this tool ' +
|
|
@@ -196,8 +298,11 @@ export const TOOLS = [
|
|
|
196
298
|
'report when you only need the COMMUNITY dimension. Runs one forum researcher (not the whole ' +
|
|
197
299
|
'H1-H8 pipeline): typical wall time 2-10 minutes, progress streamed via notifications/progress. ' +
|
|
198
300
|
'Renders every thread into the result text — title, platform, url, ' +
|
|
199
|
-
'sentimentSummary, its first cached quote,
|
|
200
|
-
'
|
|
301
|
+
'sentimentSummary, its first cached quote, its `source type:` line, and engagement ' +
|
|
302
|
+
'(upvotes · comments) ONLY when the ' +
|
|
303
|
+
'thread carries a real, non-zero count — an absent engagement line means the counters were ' +
|
|
304
|
+
'either never measured or genuinely zero on both sides — the render cannot tell those apart, so ' +
|
|
305
|
+
'do not read a missing line as low traction. When a thread cached more than one quote the row says so — ' +
|
|
201
306
|
'`(+N more cached)` after the quote — so you can tell a heavily-discussed thread from a ' +
|
|
202
307
|
'barely-quoted one; the quotes themselves are in `structuredContent` (also mirrored to ' +
|
|
203
308
|
'host-side `_meta.threads`). ' +
|
|
@@ -209,6 +314,19 @@ export const TOOLS = [
|
|
|
209
314
|
'each thread\'s cached verbatim `relevantQuotes[]`, the same field this tool returns. Read it ' +
|
|
210
315
|
'(or `get_project`) before spending here, so you do not pay to rediscover user voice the ' +
|
|
211
316
|
'project already holds. Use this tool when you need FRESH threads or the project has none yet. ' +
|
|
317
|
+
// FUL-536. Same reason `list_community_signals` states this below: a tool description is an
|
|
318
|
+
// executable interface, read BEFORE the first call, so a trust qualifier that exists only in
|
|
319
|
+
// the rendered output is discoverable one call too late. Both surfaces render the same rows,
|
|
320
|
+
// so describing one dataset two ways is the FUL-247 divergence this issue exists to close.
|
|
321
|
+
// Held word-for-word by hand until FUL-560 needed a third copy for `get_report` — at which
|
|
322
|
+
// point a convention kept by comment stopped being one, and the wording became a constant.
|
|
323
|
+
`SOURCE TYPE: every thread carries a \`source type:\` line — ${CONTENT_TYPE_STATES} The type ` +
|
|
324
|
+
'is stamped from the host by code, never written by a model, and only hosts the forum ' +
|
|
325
|
+
'allowlist recognises get one — so `unclassified` is COMMON. ' +
|
|
326
|
+
// Both exclusions are real, both are enforced, and they stay worded separately on purpose —
|
|
327
|
+
// the argument lives on `CONTENT_TYPE_EXCLUSIONS` (`content-type-display.ts`), which since
|
|
328
|
+
// FUL-560 is the ONE copy of these two sentences rather than the second of six.
|
|
329
|
+
`${CONTENT_TYPE_EXCLUSIONS} ` +
|
|
212
330
|
'ATTACH TO A PROJECT so results are saved to the web app\'s Research → Community tab: pass ' +
|
|
213
331
|
'`project_id` for an existing project, or `project_name` to auto-create one. Without either, the ' +
|
|
214
332
|
'threads are returned here but NOT persisted. ' +
|
|
@@ -355,9 +473,10 @@ export const TOOLS = [
|
|
|
355
473
|
'to find one. This is the KEYSTONE discovery read: it surfaces personas created in the ' +
|
|
356
474
|
'web app too, so you can get a persona `id` to pass to `get_persona`, `update_persona`, ' +
|
|
357
475
|
'`enrich_persona`, or `interview_persona` — previously an agent could only reach personas ' +
|
|
358
|
-
'it created in the same session. Each entry carries
|
|
359
|
-
|
|
360
|
-
'`
|
|
476
|
+
'it created in the same session. Each entry carries `seniority` / `careerPath` when the ' +
|
|
477
|
+
`persona has them — ${IDENTITY_PRIORS_EDITABILITY_ADVERT}. The ` +
|
|
478
|
+
'run-written priors, forum sources and `identityProvenance` all live in `report_data` ' +
|
|
479
|
+
'(read them via `get_report`). ' +
|
|
361
480
|
'Read-only: no credit cost, no side effects.',
|
|
362
481
|
zodSchema: ListPersonasInputSchema,
|
|
363
482
|
outputSchema: LIST_PERSONAS_OUTPUT_SCHEMA,
|
|
@@ -368,18 +487,21 @@ export const TOOLS = [
|
|
|
368
487
|
description: 'Fetch a single persona by its `persona_id` (from a `list_personas` entry, or the id printed ' +
|
|
369
488
|
'by `create_persona` / `generate_persona`). Returns the FULL persona profile as readable ' +
|
|
370
489
|
'text — name, role, company, company size, industry, location, the background/description ' +
|
|
371
|
-
'paragraph, provenance (`source`), lock state, and
|
|
372
|
-
'
|
|
490
|
+
'paragraph, provenance (`source`), lock state, and `seniority` / `careerPath` when the ' +
|
|
491
|
+
'persona has them — so you can read the persona you ' +
|
|
373
492
|
'are about to interview or correct without any further call. The same record is also ' +
|
|
374
493
|
'returned as `structuredContent.persona` (and mirrored in `_meta.persona`) for programmatic ' +
|
|
375
494
|
'use. Use it to inspect a persona before correcting it with `update_persona` or ' +
|
|
376
|
-
'interviewing it with `interview_persona`. TRUST: this is the persona ENTITY
|
|
377
|
-
|
|
378
|
-
'
|
|
379
|
-
'aggregate-calibrated, never span-receipted
|
|
380
|
-
'source.
|
|
381
|
-
'
|
|
382
|
-
'
|
|
495
|
+
'interviewing it with `interview_persona`. TRUST: this is the persona ENTITY and none of it ' +
|
|
496
|
+
`is evidence. \`seniority\` / \`careerPath\` are ${IDENTITY_PRIORS_EDITABILITY_ADVERT}. ` +
|
|
497
|
+
'Even run-written ' +
|
|
498
|
+
'ones are aggregate-calibrated, never span-receipted, so they are not evidence you can ' +
|
|
499
|
+
'follow to a source. `get_report` is where the run-written copy lives WHEN A RUN PRODUCED ' +
|
|
500
|
+
'ONE (nested under `report_data.personas[].identityPriors`, unreachable by editing; absent ' +
|
|
501
|
+
'on a persona that never had a run), along with forum ' +
|
|
502
|
+
'receipts (`sources[]`) and `identityProvenance`. Treat every other field here as ' +
|
|
503
|
+
'unverified profile data until you have checked it there. Read-only: no credit cost, no ' +
|
|
504
|
+
'side effects.',
|
|
383
505
|
zodSchema: GetPersonaInputSchema,
|
|
384
506
|
outputSchema: GET_PERSONA_OUTPUT_SCHEMA,
|
|
385
507
|
handler: (args, deps) => getPersona(args, deps),
|
|
@@ -399,11 +521,37 @@ export const TOOLS = [
|
|
|
399
521
|
'discover a persona with `list_personas`, fix it here, then `interview_persona`. Rejected ' +
|
|
400
522
|
'with a 404 if you do not own the persona (call `list_personas` to confirm the id); a persona ' +
|
|
401
523
|
'locked by subscription limits is refused separately with an upgrade prompt. ' +
|
|
402
|
-
'Identity priors (seniority /
|
|
524
|
+
'Identity priors (`seniority` / `careerPath`) are not among this tool\'s fields — ' +
|
|
525
|
+
'`update_persona_identity_priors` is the tool that writes those two. That is a routing ' +
|
|
526
|
+
'split, not a restriction on the values: the user CAN edit both in the web app and you ' +
|
|
527
|
+
'CAN write both through that tool, so never report them to anyone as immutable or as ' +
|
|
528
|
+
'research-derived.',
|
|
403
529
|
zodSchema: UpdatePersonaInputSchema,
|
|
404
530
|
paramAliases: UPDATE_PERSONA_ALIASES,
|
|
405
531
|
handler: (args, deps) => updatePersona(args, deps),
|
|
406
532
|
}),
|
|
533
|
+
defineTool({
|
|
534
|
+
name: 'update_persona_identity_priors',
|
|
535
|
+
description: 'Set a persona\'s identity priors — `seniority` (the RUNG: a level of responsibility ' +
|
|
536
|
+
'like "senior IC" or "team lead", not a job title) and `careerPath` (the trajectory, ' +
|
|
537
|
+
'e.g. "support → product ops → PM"). Supply `persona_id` and at least one of `seniority`, ' +
|
|
538
|
+
'`career_path`; only the field you pass changes, and an empty string clears it. These two ' +
|
|
539
|
+
'live on their own tool because they are written only by named writers, never by a ' +
|
|
540
|
+
'general persona patch — `update_persona` handles the ordinary scalars. This is a FREE, ' +
|
|
541
|
+
'unmetered ' +
|
|
542
|
+
'explicit edit: it does NOT use the AI or debit a credit (use `enrich_persona` to have a ' +
|
|
543
|
+
'model fill blank fields instead). Rejected with a 404 if you do not own the persona ' +
|
|
544
|
+
'(call `list_personas` to confirm the id); a persona locked by subscription limits is ' +
|
|
545
|
+
'refused separately with an upgrade prompt. ' +
|
|
546
|
+
'TRUST: these fields are user-editable in the web app and writable here, and NOTHING ' +
|
|
547
|
+
'records whether a stored value came from a research run, from an agent, or from a person ' +
|
|
548
|
+
'typing it — so writing one does not make it grounding, and reading one back later is not ' +
|
|
549
|
+
'a research signal. What a run produced stays at ' +
|
|
550
|
+
'`report_data.personas[].identityPriors` (read it with `get_report`), which this write ' +
|
|
551
|
+
'does not touch — so overwriting here never destroys the run\'s own record.',
|
|
552
|
+
zodSchema: UpdatePersonaIdentityPriorsInputSchema,
|
|
553
|
+
handler: (args, deps) => updatePersonaIdentityPriors(args, deps),
|
|
554
|
+
}),
|
|
407
555
|
defineTool({
|
|
408
556
|
name: 'list_reports',
|
|
409
557
|
description: 'List the caller\'s past `clien_research` runs (newest first, paginated by `limit`). ' +
|
|
@@ -431,18 +579,29 @@ export const TOOLS = [
|
|
|
431
579
|
'NO_RECEIPT can mean a bad claim OR merely sparse evidence, so check that persona\'s ' +
|
|
432
580
|
'`insufficientEvidence` / `sourcesFound` line before discounting it. ' +
|
|
433
581
|
'(2) the SEPARATE market/competitor spine — same three states, "RRCP-s{n}" receipt ids into ' +
|
|
434
|
-
|
|
582
|
+
// FUL-416: the SECOND advert mirror of the tier's label — it once read "model-attested"
|
|
583
|
+
// while the one above read "Inferred", i.e. the same MCP server describing one tier two ways.
|
|
584
|
+
'their own evidence pool; a NO_RECEIPT claim marked "Cited" means a supporting page ' +
|
|
435
585
|
'was read and independently vouched but no exact span pinned (NOT a receipt), and an unmarked ' +
|
|
436
586
|
'NO_RECEIPT is recalled model knowledge, unverified. Neither counts as grounded — key on the ' +
|
|
437
587
|
'state, never on whether a source id is present. ' +
|
|
438
|
-
|
|
588
|
+
// FUL-560. Third surface for this vocabulary, and the one an agent reaches after a PAID run.
|
|
589
|
+
// The two exclusion sentences come from the shared constant rather than a hand-copy — the
|
|
590
|
+
// receipt pools had no wording at all, and adding a fifth spelling to fix that is the FUL-247
|
|
591
|
+
// drift the constant exists to prevent. The persona pool states its invariant once and marks
|
|
592
|
+
// only the rows that break it, so an agent is told to expect nothing on a well-formed
|
|
593
|
+
// `user_voice` receipt; the market/competitor pool states every row.
|
|
594
|
+
`(3) ${CONTENT_TYPE_DIGEST_ADVERT} ` +
|
|
595
|
+
'(4) per-persona QA — a ⚠️ QA-FLAGGED persona failed a quality check (or could not be checked ' +
|
|
439
596
|
'at all); do not rely on its claims. Its `identityPriors` (seniority rung, career path) are ' +
|
|
440
597
|
'typed enrichment and `identityProvenance` is a PII-free aggregate calibration line — NEVER a ' +
|
|
441
598
|
'receipt, do not cite it as a source. ' +
|
|
442
|
-
'(
|
|
599
|
+
'(5) the anti-sycophancy readout — explicit rejection count, `lowDiscrimination` broken-persona ' +
|
|
443
600
|
'flags, and per-hypothesis disagreement splits. ' +
|
|
444
|
-
'(
|
|
601
|
+
'(6) hypothesis robustness — when a verdict FLIPPED under rephrasing the digest names the ' +
|
|
445
602
|
'downgraded verdict to act on instead of the reported one. ' +
|
|
603
|
+
STRUCTURED_OPEN_QUESTIONS_ADVERT +
|
|
604
|
+
STRUCTURED_VERDICT_RATIONALE_ADVERT +
|
|
446
605
|
'When a section is missing the digest SAYS SO ("NOT PRESENT on this run") — absent is not ' +
|
|
447
606
|
'clean, so treat the corresponding prose as unverified. The full structured `report_data` ' +
|
|
448
607
|
'(hypotheses, competitors[], key findings, and every field summarised above) is also returned ' +
|
|
@@ -460,6 +619,17 @@ export const TOOLS = [
|
|
|
460
619
|
defineTool({
|
|
461
620
|
name: 'interview_persona',
|
|
462
621
|
description: 'Run a real, stateful multi-turn interview with a persona and get its full replies. ' +
|
|
622
|
+
// FUL-335 — the disclosure, and it is load-bearing rather than a nicety.
|
|
623
|
+
// The persona's system prompt instructs it to stay in role rather than
|
|
624
|
+
// confess when asked "are you an AI?", which is honest deflection only
|
|
625
|
+
// while the consumer has been told what it is talking to. The web UI
|
|
626
|
+
// carries a `Synthetic` label on the interview screen; over MCP the tool
|
|
627
|
+
// description IS that label, because the caller sees nothing else. Do not
|
|
628
|
+
// move this to `_meta` — that channel is not model-visible.
|
|
629
|
+
'IMPORTANT — these personas are SYNTHETIC: AI-generated composites, not real people. ' +
|
|
630
|
+
'Their replies are simulated research signal, never testimony from a human, and the ' +
|
|
631
|
+
'persona will stay in character if you ask whether it is an AI (it will answer plainly ' +
|
|
632
|
+
'if you press). Say so whenever you relay these answers to a person. ' +
|
|
463
633
|
'Drive it as a loop: `action:start` once (with project_id + persona_id) opens the interview ' +
|
|
464
634
|
'and seeds the persona\'s greeting, printing the interview id in its result text. ' +
|
|
465
635
|
'Then `action:turn` (interview_id + content) repeatedly — each call posts one question and ' +
|
|
@@ -473,9 +643,8 @@ export const TOOLS = [
|
|
|
473
643
|
'interviews together yourself. Each `turn` generates a real AI reply. Billing is a FLAT ' +
|
|
474
644
|
'3-credit charge for the WHOLE interview, however many turns it runs: the first charging ' +
|
|
475
645
|
'turn debits it, and every later turn — or a retry of the same one — replays that charge ' +
|
|
476
|
-
'to a no-op, so it is free.
|
|
477
|
-
'
|
|
478
|
-
'billing month, however many credits you hold.',
|
|
646
|
+
'to a no-op, so it is free. Credits are the ONLY meter: there is no separate token ' +
|
|
647
|
+
'allowance, so a turn never fails for usage reasons while you hold credits.',
|
|
479
648
|
zodSchema: InterviewPersonaInputSchema,
|
|
480
649
|
paramAliases: INTERVIEW_PERSONA_ALIASES,
|
|
481
650
|
handler: (args, deps) => interviewPersona(args, deps),
|
|
@@ -549,7 +718,9 @@ export const TOOLS = [
|
|
|
549
718
|
description: 'List the community signals (forum / Hacker News / Stack Exchange threads) recorded for a Clien.ai project ' +
|
|
550
719
|
'(newest-discovered first, paginated). Returns each thread\'s title, platform, ' +
|
|
551
720
|
'sentiment summary, url, one representative quote (with `(+N more cached)` when the thread ' +
|
|
552
|
-
'has others, so one quote is not mistaken for all there was), and engagement as readable text
|
|
721
|
+
'has others, so one quote is not mistaken for all there was), and engagement as readable text ' +
|
|
722
|
+
'(shown only when a real, non-zero count was measured — an absent engagement line means ' +
|
|
723
|
+
'either UNMEASURED or genuinely zero on both sides, which the render cannot distinguish); the full ' +
|
|
553
724
|
'signal array and pagination are also returned as `structuredContent.communitySignals` / ' +
|
|
554
725
|
'`.pagination` (mirrored in `_meta`). Requires ' +
|
|
555
726
|
'a `project_id` — call `list_projects` to find one. ' +
|
|
@@ -564,10 +735,88 @@ export const TOOLS = [
|
|
|
564
735
|
'project FIRST saw a thread and that order is STABLE — a thread a later run sees again ' +
|
|
565
736
|
'does not move back to page one. So page one is the newest DISCOVERIES, not the newest ' +
|
|
566
737
|
'activity; do not read a thread\'s position as a recency signal. ' +
|
|
738
|
+
// FUL-341. A tool description is an executable interface: an agent reads it BEFORE its
|
|
739
|
+
// first call and is primed by it, so a trust qualifier that exists only in the rendered
|
|
740
|
+
// output is discoverable one call too late. Same reason `list_competitors` above names its
|
|
741
|
+
// TRUST states here rather than leaving them to be inferred from the text.
|
|
742
|
+
`SOURCE TYPE: every signal carries a \`source type:\` line — ${CONTENT_TYPE_STATES} ` +
|
|
743
|
+
// Both exclusions are real, both are enforced, and they stay worded separately on purpose —
|
|
744
|
+
// the argument lives on `CONTENT_TYPE_EXCLUSIONS` (`content-type-display.ts`), which since
|
|
745
|
+
// FUL-560 is the ONE copy of these two sentences rather than the second of six.
|
|
746
|
+
`${CONTENT_TYPE_EXCLUSIONS} ` +
|
|
567
747
|
'Read-only: no credit cost, no side effects.',
|
|
568
748
|
zodSchema: ListCommunitySignalsInputSchema,
|
|
569
749
|
outputSchema: LIST_COMMUNITY_SIGNALS_OUTPUT_SCHEMA,
|
|
570
750
|
handler: (args, deps) => listCommunitySignals(args, deps),
|
|
571
751
|
}),
|
|
752
|
+
defineTool({
|
|
753
|
+
name: 'get_market',
|
|
754
|
+
description: 'Read a Clien.ai project\'s MARKET SNAPSHOT — the third cross-run research dossier, ' +
|
|
755
|
+
'alongside `list_competitors` and `list_community_signals`. Returns market size, growth ' +
|
|
756
|
+
'trend, key trends and positioning gaps as readable text, plus the id of the run that ' +
|
|
757
|
+
'produced them and when it was last updated; the full record is also returned as ' +
|
|
758
|
+
'`structuredContent.market` (mirrored in `_meta`). Requires a `project_id` — call ' +
|
|
759
|
+
'`list_projects` to find one. ' +
|
|
760
|
+
// FUL-477 is the reason this tool exists and the most valuable thing it carries, so the
|
|
761
|
+
// description states it BEFORE first use: a tool description is an executable interface,
|
|
762
|
+
// and a provenance guarantee discovered only in the output is discovered one call too late.
|
|
763
|
+
'ONE RUN, ONE SNAPSHOT: unlike the two collections, market is a SINGLETON — one row per ' +
|
|
764
|
+
'project, replaced whole. Every field returned was written together by the single research ' +
|
|
765
|
+
'run named in `sourceRunId`, never assembled from several runs, so a figure you quote can ' +
|
|
766
|
+
'always be attributed to a specific run. Pass that id to `get_report` for the run behind ' +
|
|
767
|
+
'the numbers. ' +
|
|
768
|
+
// Constraint 1 of the issue: absent must never read as zero or as a finding.
|
|
769
|
+
'NO SNAPSHOT IS NOT AN EMPTY MARKET: a project can legitimately have none, because a ' +
|
|
770
|
+
'completed run that did no web research writes nothing here. The tool says so explicitly ' +
|
|
771
|
+
'and you must not convert it into a claim — "no market data on record" is the only ' +
|
|
772
|
+
'statement it supports, never "the market is small", "unmeasured" or zero. A run that DID ' +
|
|
773
|
+
'research the web and recorded nothing is reported as its own, differently-worded case. ' +
|
|
774
|
+
// Same shape as `list_competitors`' strengths/weaknesses sentence: a figure that reaches
|
|
775
|
+
// agent-visible text without a trust state reads as checked (FUL-247).
|
|
776
|
+
'TRUST: the figures here carry NO trust state. A market figure\'s grounding lives in its ' +
|
|
777
|
+
'source run\'s claim spine, not on the snapshot, so treat everything returned as recorded ' +
|
|
778
|
+
'rather than verified — cite it only after reading the source run with `get_report`, whose ' +
|
|
779
|
+
'market claims carry GROUNDED / SPECULATION / NO_RECEIPT states and their receipts. ' +
|
|
780
|
+
'This is a free read of persisted state — it never researches anything. ' +
|
|
781
|
+
'Read-only: no credit cost, no side effects.',
|
|
782
|
+
zodSchema: GetMarketInputSchema,
|
|
783
|
+
outputSchema: GET_MARKET_OUTPUT_SCHEMA,
|
|
784
|
+
handler: (args, deps) => getMarket(args, deps),
|
|
785
|
+
}),
|
|
786
|
+
defineTool({
|
|
787
|
+
name: 'list_interview_scripts',
|
|
788
|
+
description: 'Read the INTERVIEW SCRIPTS a Clien.ai research run wrote for a project — the questions ' +
|
|
789
|
+
'that run decided are worth asking real people, one script per hypothesis, ranked ' +
|
|
790
|
+
'least-settled first. Returns each script\'s hypothesis id, statement, verdict, ' +
|
|
791
|
+
'confidence, who to recruit and its questions as readable text; the full set and the run ' +
|
|
792
|
+
'it came from are also returned as `structuredContent.interviewScripts` / `.sourceRun` ' +
|
|
793
|
+
'(mirrored in `_meta`). Requires a `project_id` — call `list_projects` to find one. ' +
|
|
794
|
+
// The point of the tool, stated before first use: a tool description is an executable
|
|
795
|
+
// interface, and an agent that reads this AFTER inventing its own questions has already
|
|
796
|
+
// produced the unanchored interview this exists to prevent.
|
|
797
|
+
'CALL THIS BEFORE `interview_persona`. These questions are anchored to the run\'s open ' +
|
|
798
|
+
'hypotheses, so the answers feed back into its claim spine; questions you invent, or ' +
|
|
799
|
+
're-derive from `get_report`\'s hypothesis list, are not, and re-deriving them is ' +
|
|
800
|
+
'recomputing something the run already produced and stored. ' +
|
|
801
|
+
// Constraint 2 of FUL-514: a read path must never do model work.
|
|
802
|
+
'STORED, NOT SUGGESTED: this is the persisted output of ONE SPECIFIC RUN, named in the ' +
|
|
803
|
+
'result and written when that run executed. Nothing is generated to answer this call, ' +
|
|
804
|
+
'now or ever — it is a free read of a report that is already immutable, so the verdict ' +
|
|
805
|
+
'beside each script is that run\'s and may be older than today. ' +
|
|
806
|
+
'NO SCRIPTS IS NOT "NOTHING WORTH ASKING": a project can legitimately have none, because ' +
|
|
807
|
+
'scoped runs (`scan_competitors`, `search_forums`) never write them and a failed run ' +
|
|
808
|
+
'writes nothing. The tool says so explicitly and you must not convert it into a claim ' +
|
|
809
|
+
'that the hypotheses are settled. ' +
|
|
810
|
+
'LINKAGE: carry each script\'s `hypothesisId` forward with whatever the interview ' +
|
|
811
|
+
'returns. `interview_persona` does not record it, so that id is the only thing tying an ' +
|
|
812
|
+
'answer back to the hypothesis it was meant to test. ' +
|
|
813
|
+
'TRUST: the verdicts and confidences here are the source run\'s reading of its own ' +
|
|
814
|
+
'hypotheses, not graded claims — no GROUNDED / SPECULATION / NO_RECEIPT states attach to ' +
|
|
815
|
+
'them; read the source run with `get_report` for those. ' +
|
|
816
|
+
'Read-only: no credit cost, no side effects.',
|
|
817
|
+
zodSchema: ListInterviewScriptsInputSchema,
|
|
818
|
+
outputSchema: LIST_INTERVIEW_SCRIPTS_OUTPUT_SCHEMA,
|
|
819
|
+
handler: (args, deps) => listInterviewScripts(args, deps),
|
|
820
|
+
}),
|
|
572
821
|
];
|
|
573
822
|
//# sourceMappingURL=registry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|