@clien-ai/mcp 0.1.10 → 0.1.12

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 CHANGED
@@ -72,9 +72,9 @@ the top 3 threats", etc.
72
72
 
73
73
  `clien_research` is the hero — the recommended default for validating an idea
74
74
  end to end. Alongside it, the server exposes granular primitives (`create_persona`,
75
- `interview_persona`, `list_projects` / `create_project`, `list_reports` /
76
- `get_report`, `clien_research_status`) you can sequence for targeted, cheaper
77
- checks.
75
+ `generate_persona`, `enrich_persona`, `interview_persona`, `scan_competitors`, `search_forums`,
76
+ `list_projects` / `create_project`, `list_reports` / `get_report`,
77
+ `clien_research_status`) you can sequence for targeted, cheaper checks.
78
78
 
79
79
  See [`docs/recipes/`](../docs/recipes/) for the supported compositions:
80
80
 
@@ -17,10 +17,15 @@
17
17
  * (FUL-21). `ephemeral: true` sets `include_in_insights=false` so a
18
18
  * scratch persona is excluded from the project's aggregate insights.
19
19
  *
20
- * Scope note: this covers the explicit-field (free) create path only. The
21
- * AI generate/enrich mode with a per-tool credit debit is deferred — its
22
- * infrastructure (per-tool spend RPC, credit cost table, bearer auth on the AI
23
- * generation routes) is not yet built. See the FUL-24 follow-up issue.
20
+ * Companion tools:
21
+ * - `generate_persona` (FUL-67) — the AI generate-from-brief path over
22
+ * `POST /api/personas/ai-generate`. Debits one `generate_persona` credit
23
+ * (FUL-20 cost table) and persists via the same `createPersonaRecord` path,
24
+ * so `source='mcp'` + `ephemeral` behave identically to the explicit create.
25
+ * - `enrich_persona` (FUL-77) — AI-fills the blank (or explicitly refreshed)
26
+ * scalar fields of an EXISTING persona over `POST /api/personas/ai-enrich`.
27
+ * Debits one `enrich_persona` credit, refunded if the enrichment fails; a
28
+ * no-op (nothing blank) charges nothing. Provenance is untouched.
24
29
  *
25
30
  * Error mapping mirrors `projects.ts`: 401 → invalidate the cached session and
26
31
  * surface a re-auth message; 404 → the project isn't owned by the caller;
@@ -189,4 +194,284 @@ export async function createPersona(input, deps) {
189
194
  _meta: { persona },
190
195
  };
191
196
  }
197
+ // ---------------------------------------------------------------------------
198
+ // generate_persona (FUL-67) — AI generate-from-brief + per-tool credit debit
199
+ // ---------------------------------------------------------------------------
200
+ const GENERATE_PERSONA_FETCH_TIMEOUT_MS = 60_000;
201
+ // Local cap, kept in sync with GeneratePersonaSchema in
202
+ // app/api/personas/ai-generate/route.ts. The server re-validates regardless.
203
+ const ADDITIONAL_CONTEXT_MAX = 2000;
204
+ export const GeneratePersonaInputSchema = z.object({
205
+ projectId: z
206
+ .string()
207
+ .uuid()
208
+ .describe('UUID of the project this persona belongs to. Get it from `list_projects` ' +
209
+ '(or `create_project`). Rejected with a 404 if you do not own the project.'),
210
+ name: z
211
+ .string()
212
+ .trim()
213
+ .min(1, 'name must be non-empty')
214
+ .max(NAME_MAX, `name too long (max ${NAME_MAX} chars)`)
215
+ .describe('The persona\'s name (e.g. "Priya, the pragmatic PM"). Required.'),
216
+ role: z
217
+ .string()
218
+ .trim()
219
+ .min(1, 'role must be non-empty')
220
+ .max(ROLE_MAX, `role too long (max ${ROLE_MAX} chars)`)
221
+ .describe('The persona\'s job title or role (e.g. "Senior Product Manager"). Required.'),
222
+ company: z
223
+ .string()
224
+ .max(COMPANY_MAX, `company too long (max ${COMPANY_MAX} chars)`)
225
+ .optional()
226
+ .describe('Optional company/organisation. When omitted the AI invents a realistic one from the role.'),
227
+ industry: z
228
+ .string()
229
+ .max(INDUSTRY_MAX, `industry too long (max ${INDUSTRY_MAX} chars)`)
230
+ .optional()
231
+ .describe('Optional industry (e.g. "Fintech"). When omitted the AI infers one.'),
232
+ companySize: z
233
+ .string()
234
+ .max(COMPANY_SIZE_MAX, `companySize too long (max ${COMPANY_SIZE_MAX} chars)`)
235
+ .optional()
236
+ .describe('Optional company size (e.g. "11-50"). When omitted the AI infers one.'),
237
+ additionalContext: z
238
+ .string()
239
+ .max(ADDITIONAL_CONTEXT_MAX, `additionalContext too long (max ${ADDITIONAL_CONTEXT_MAX} chars)`)
240
+ .optional()
241
+ .describe('Optional free-form brief to steer generation — goals, constraints, the product being ' +
242
+ 'validated, or anything that should shape the persona\'s background and pain points.'),
243
+ ephemeral: z
244
+ .boolean()
245
+ .optional()
246
+ .default(false)
247
+ .describe('Set true for a scratch/throwaway persona that should NOT count toward the project\'s ' +
248
+ 'aggregate insights (sets include_in_insights=false).'),
249
+ });
250
+ /**
251
+ * Map a non-ok POST /api/personas/ai-generate response to a PersonaToolError.
252
+ * The 402 branch mirrors scoped-research.ts's handleScopedStartError so an
253
+ * insufficient-credit stop surfaces balance/required/buy-url guidance.
254
+ */
255
+ async function throwForGenerateResponse(response, deps) {
256
+ const text = await response.text().catch(() => '');
257
+ let parsed = null;
258
+ try {
259
+ parsed = JSON.parse(text);
260
+ }
261
+ catch {
262
+ // non-JSON body — fall back to the raw text below.
263
+ }
264
+ const status = response.status;
265
+ if (status === 402 || parsed?.code === 'INSUFFICIENT_CREDITS') {
266
+ const balance = typeof parsed?.balance === 'number' ? parsed.balance : null;
267
+ const required = typeof parsed?.required === 'number' ? parsed.required : null;
268
+ const buyUrl = typeof parsed?.buy_url === 'string' && parsed.buy_url.length > 0
269
+ ? parsed.buy_url
270
+ : 'https://clien.ai/app/billing';
271
+ if (balance !== null && required !== null) {
272
+ const needed = Math.max(required - balance, 1);
273
+ throw new PersonaToolError(`Insufficient credits to generate a persona — you have ${balance}, this needs ${required} ` +
274
+ `(${needed} more). Buy credits at ${buyUrl}.`);
275
+ }
276
+ throw new PersonaToolError(`Insufficient credits to generate a persona. Buy more at ${buyUrl}.`);
277
+ }
278
+ const category = categorizeFetchError(status);
279
+ if (category === 'auth') {
280
+ if (response.refreshError?.kind !== 'transient')
281
+ deps.invalidateSession?.();
282
+ throw new PersonaToolError('Session expired. Re-run any Clien.ai tool to re-authenticate, then try again.');
283
+ }
284
+ if (status === 404) {
285
+ throw new PersonaToolError('Could not generate persona — project not found, or you don\'t own it. ' +
286
+ 'Call list_projects to confirm the projectId.');
287
+ }
288
+ const detail = parsed?.error ? truncate(parsed.error, 200) : truncate(text, 200);
289
+ if (status === 400) {
290
+ throw new PersonaToolError(`Could not generate persona — ${detail}`);
291
+ }
292
+ if (status === 502 || status === 503) {
293
+ throw new PersonaToolError(`Persona generation is temporarily unavailable (HTTP ${status})${detail ? `: ${detail}` : ''}. ` +
294
+ 'Try again in a moment — no credits were charged.');
295
+ }
296
+ throw new PersonaToolError(`Failed to generate persona (HTTP ${status}): ${detail}`);
297
+ }
298
+ export async function generatePersona(input, deps) {
299
+ const parsed = GeneratePersonaInputSchema.safeParse(input);
300
+ if (!parsed.success) {
301
+ throw new PersonaToolError(`Invalid input — ${formatZodError(parsed.error)}`);
302
+ }
303
+ const { projectId, name, role, company, industry, companySize, additionalContext, ephemeral } = parsed.data;
304
+ const ctx = makeCtx(deps);
305
+ const body = { projectId, name, role, ephemeral };
306
+ if (company !== undefined)
307
+ body.company = company;
308
+ if (industry !== undefined)
309
+ body.industry = industry;
310
+ if (companySize !== undefined)
311
+ body.companySize = companySize;
312
+ if (additionalContext !== undefined)
313
+ body.additionalContext = additionalContext;
314
+ let response;
315
+ try {
316
+ response = await apiCall(ctx, 'POST', '/api/personas/ai-generate', {
317
+ body,
318
+ timeoutMs: GENERATE_PERSONA_FETCH_TIMEOUT_MS,
319
+ });
320
+ }
321
+ catch (err) {
322
+ const e = err;
323
+ if (e.name === 'AbortError' || e.name === 'TimeoutError') {
324
+ throw new PersonaToolError(`Generating the persona timed out after ${GENERATE_PERSONA_FETCH_TIMEOUT_MS / 1000}s. ` +
325
+ 'It may or may not have been created — call list_projects / check the project before retrying.');
326
+ }
327
+ throw err;
328
+ }
329
+ if (!response.ok)
330
+ await throwForGenerateResponse(response, deps);
331
+ const json = (await response.json().catch(() => null));
332
+ const persona = json?.persona;
333
+ if (!persona?.id) {
334
+ throw new PersonaToolError('Persona generation returned no persona id; the operation may not have succeeded.');
335
+ }
336
+ const insightsNote = ephemeral
337
+ ? ' Marked ephemeral — excluded from project insights.'
338
+ : '';
339
+ return {
340
+ content: [
341
+ {
342
+ type: 'text',
343
+ text: `Generated persona "${persona.name ?? name}" (${persona.role ?? role}, id: ${persona.id}) ` +
344
+ `in project ${projectId} — debited 1 credit.${insightsNote}`,
345
+ },
346
+ ],
347
+ _meta: { persona },
348
+ };
349
+ }
350
+ // ---------------------------------------------------------------------------
351
+ // enrich_persona (FUL-77) — AI-enrich an existing persona + per-tool credit debit
352
+ // ---------------------------------------------------------------------------
353
+ const ENRICH_PERSONA_FETCH_TIMEOUT_MS = 60_000;
354
+ // The scalar fields enrich can AI-fill. Kept in sync with `ENRICHABLE_FIELDS` in
355
+ // app/lib/personas/enrich-with-credits.ts (the @clien-ai/mcp package is published
356
+ // separately and cannot import from the Next.js app). The server re-validates.
357
+ const ENRICHABLE_FIELDS = ['description', 'company', 'industry', 'companySize', 'location'];
358
+ export const EnrichPersonaInputSchema = z.object({
359
+ personaId: z
360
+ .string()
361
+ .uuid()
362
+ .describe('UUID of the persona to enrich. Get it from a persona\'s `_meta.persona.id` ' +
363
+ '(e.g. from `create_persona`) or `list_projects`. Rejected with a 404 if you do not own it.'),
364
+ refresh: z
365
+ .array(z.enum(ENRICHABLE_FIELDS))
366
+ .optional()
367
+ .describe('Optional list of already-populated fields to REGENERATE. By default enrich only fills ' +
368
+ 'fields that are currently blank and never overwrites existing content; pass e.g. ' +
369
+ '["description", "industry"] to force those to be regenerated. Valid values: ' +
370
+ 'description, company, industry, companySize, location.'),
371
+ additionalContext: z
372
+ .string()
373
+ .max(ADDITIONAL_CONTEXT_MAX, `additionalContext too long (max ${ADDITIONAL_CONTEXT_MAX} chars)`)
374
+ .optional()
375
+ .describe('Optional free-form brief to steer the enrichment — the product/market being validated, ' +
376
+ 'constraints, or anything that should shape the filled-in background and details.'),
377
+ });
378
+ /**
379
+ * Map a non-ok POST /api/personas/ai-enrich response to a PersonaToolError.
380
+ * Mirrors throwForGenerateResponse: the 402 branch surfaces balance/required/
381
+ * buy-url; 401 re-auth; 404 not-owned; 400/502/503 as generate. A locked persona
382
+ * (403 PERSONA_LOCKED) surfaces a distinct upgrade message.
383
+ */
384
+ async function throwForEnrichResponse(response, deps) {
385
+ const text = await response.text().catch(() => '');
386
+ let parsed = null;
387
+ try {
388
+ parsed = JSON.parse(text);
389
+ }
390
+ catch {
391
+ // non-JSON body — fall back to the raw text below.
392
+ }
393
+ const status = response.status;
394
+ if (status === 402 || parsed?.code === 'INSUFFICIENT_CREDITS') {
395
+ const balance = typeof parsed?.balance === 'number' ? parsed.balance : null;
396
+ const required = typeof parsed?.required === 'number' ? parsed.required : null;
397
+ const buyUrl = typeof parsed?.buy_url === 'string' && parsed.buy_url.length > 0
398
+ ? parsed.buy_url
399
+ : 'https://clien.ai/app/billing';
400
+ if (balance !== null && required !== null) {
401
+ const needed = Math.max(required - balance, 1);
402
+ throw new PersonaToolError(`Insufficient credits to enrich a persona — you have ${balance}, this needs ${required} ` +
403
+ `(${needed} more). Buy credits at ${buyUrl}.`);
404
+ }
405
+ throw new PersonaToolError(`Insufficient credits to enrich a persona. Buy more at ${buyUrl}.`);
406
+ }
407
+ const category = categorizeFetchError(status);
408
+ if (category === 'auth') {
409
+ if (response.refreshError?.kind !== 'transient')
410
+ deps.invalidateSession?.();
411
+ throw new PersonaToolError('Session expired. Re-run any Clien.ai tool to re-authenticate, then try again.');
412
+ }
413
+ if (status === 403 && parsed?.code === 'PERSONA_LOCKED') {
414
+ throw new PersonaToolError('Could not enrich persona — it is locked due to subscription limits. Upgrade to Pro to enrich it.');
415
+ }
416
+ if (status === 404) {
417
+ throw new PersonaToolError('Could not enrich persona — persona not found, or you don\'t own it. ' +
418
+ 'Confirm the personaId (e.g. from create_persona\'s _meta.persona.id).');
419
+ }
420
+ const detail = parsed?.error ? truncate(parsed.error, 200) : truncate(text, 200);
421
+ if (status === 400) {
422
+ throw new PersonaToolError(`Could not enrich persona — ${detail}`);
423
+ }
424
+ if (status === 502 || status === 503) {
425
+ throw new PersonaToolError(`Persona enrichment is temporarily unavailable (HTTP ${status})${detail ? `: ${detail}` : ''}. ` +
426
+ 'Try again in a moment — no credits were charged.');
427
+ }
428
+ throw new PersonaToolError(`Failed to enrich persona (HTTP ${status}): ${detail}`);
429
+ }
430
+ export async function enrichPersona(input, deps) {
431
+ const parsed = EnrichPersonaInputSchema.safeParse(input);
432
+ if (!parsed.success) {
433
+ throw new PersonaToolError(`Invalid input — ${formatZodError(parsed.error)}`);
434
+ }
435
+ const { personaId, refresh, additionalContext } = parsed.data;
436
+ const ctx = makeCtx(deps);
437
+ const body = { personaId };
438
+ if (refresh !== undefined)
439
+ body.refresh = refresh;
440
+ if (additionalContext !== undefined)
441
+ body.additionalContext = additionalContext;
442
+ let response;
443
+ try {
444
+ response = await apiCall(ctx, 'POST', '/api/personas/ai-enrich', {
445
+ body,
446
+ timeoutMs: ENRICH_PERSONA_FETCH_TIMEOUT_MS,
447
+ });
448
+ }
449
+ catch (err) {
450
+ const e = err;
451
+ if (e.name === 'AbortError' || e.name === 'TimeoutError') {
452
+ throw new PersonaToolError(`Enriching the persona timed out after ${ENRICH_PERSONA_FETCH_TIMEOUT_MS / 1000}s. ` +
453
+ 'It may or may not have completed — check the persona before retrying (a failed enrich is refunded).');
454
+ }
455
+ throw err;
456
+ }
457
+ if (!response.ok)
458
+ await throwForEnrichResponse(response, deps);
459
+ const json = (await response.json().catch(() => null));
460
+ const persona = json?.persona;
461
+ if (!persona?.id) {
462
+ throw new PersonaToolError('Persona enrichment returned no persona; the operation may not have succeeded.');
463
+ }
464
+ const enriched = Array.isArray(json?.enriched) ? json.enriched : [];
465
+ const balance = typeof json?.balance === 'number' ? json.balance : null;
466
+ const remaining = balance !== null ? ` ${balance} credit${balance === 1 ? '' : 's'} remaining.` : '';
467
+ const text = enriched.length > 0
468
+ ? `Enriched persona "${persona.name ?? personaId}" (id: ${persona.id}) — filled ` +
469
+ `${enriched.join(', ')}. Debited 1 credit.${remaining}`
470
+ : `Persona "${persona.name ?? personaId}" (id: ${persona.id}) was already fully populated — ` +
471
+ 'nothing enriched, no credit charged. Pass `refresh` to regenerate specific fields.';
472
+ return {
473
+ content: [{ type: 'text', text }],
474
+ _meta: { persona, enriched, balance },
475
+ };
476
+ }
192
477
  //# sourceMappingURL=personas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/tools/personas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../../src/tools/personas.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { zodToInputSchema } from './schema.js';
16
16
  import { ResearchInputSchema, runResearch } from './research.js';
17
17
  import { StatusInputSchema, getResearchStatus } from './status.js';
18
18
  import { ListProjectsInputSchema, CreateProjectInputSchema, listProjects, createProject, } from './projects.js';
19
- import { CreatePersonaInputSchema, createPersona } from './personas.js';
19
+ import { CreatePersonaInputSchema, createPersona, GeneratePersonaInputSchema, generatePersona, EnrichPersonaInputSchema, enrichPersona, } from './personas.js';
20
20
  import { ListReportsInputSchema, GetReportInputSchema, listReports, getReport, } from './reports.js';
21
21
  import { InterviewPersonaInputSchema, interviewPersona } from './interview.js';
22
22
  import { ScanCompetitorsInputSchema, scanCompetitors, SearchForumsInputSchema, searchForums, } from './scoped-research.js';
@@ -144,11 +144,44 @@ export const TOOLS = [
144
144
  'Compose with `interview_persona` to validate a NEW MARKET cheaply: create a persona ' +
145
145
  'representing that market, then interview it (see docs/recipes/new-market-persona-validation.md). ' +
146
146
  'For a FULL validation report on the new market rather than a targeted probe, prefer `clien_research`. ' +
147
- 'This is a free, no-credit create for explicit fields — AI generation/enrichment of ' +
148
- 'persona details is not yet available via MCP, so supply the fields yourself.',
147
+ 'This is a free, no-credit create for explicit fields you already know — if you want the AI to ' +
148
+ 'generate the background/company/industry from just a name + role, use `generate_persona` instead ' +
149
+ '(that path debits 1 credit).',
149
150
  zodSchema: CreatePersonaInputSchema,
150
151
  handler: (args, deps) => createPersona(args, deps),
151
152
  }),
153
+ defineTool({
154
+ name: 'generate_persona',
155
+ description: 'AI-generate a persona from a short brief and save it to a Clien.ai project. Supply at minimum ' +
156
+ '`projectId`, `name`, and `role`; the model fills a believable background, company, industry, ' +
157
+ 'company size, and location. Add `company`, `industry`, or `companySize` to pin those yourself, ' +
158
+ 'and `additionalContext` (a free-form brief) to steer the persona toward the product/market you ' +
159
+ 'are validating. Set `ephemeral: true` for a scratch persona excluded from the project\'s ' +
160
+ 'aggregate insights. Returns the created persona (including its `id`) in `_meta.persona`. ' +
161
+ 'This DEBITS 1 credit per generated persona (the explicit, no-AI `create_persona` is free — use ' +
162
+ 'that when you already know the fields). On insufficient credits the tool returns a clear error ' +
163
+ 'with your balance and a top-up link, and nothing is charged. A failed generation is never ' +
164
+ 'charged, so a surfaced error is safe to retry.',
165
+ zodSchema: GeneratePersonaInputSchema,
166
+ handler: (args, deps) => generatePersona(args, deps),
167
+ }),
168
+ defineTool({
169
+ name: 'enrich_persona',
170
+ description: 'AI-enrich an EXISTING persona: fill in the thin scalar fields it is missing (background/' +
171
+ 'description, company, industry, company size, location) using the model. Supply `personaId`; ' +
172
+ 'the model fills only the fields that are currently BLANK — it never overwrites content you ' +
173
+ 'already entered. To regenerate specific already-populated fields, pass `refresh` (e.g. ' +
174
+ '["description", "industry"]). Add `additionalContext` (a free-form brief) to steer the ' +
175
+ 'enrichment toward the product/market you are validating. Returns the updated persona in ' +
176
+ '`_meta.persona` and the filled fields in `_meta.enriched`. ' +
177
+ 'This DEBITS 1 credit per enrichment (use `create_persona` to set fields explicitly for free, ' +
178
+ 'or `generate_persona` to AI-create a brand-new persona). If nothing is blank and you pass no ' +
179
+ '`refresh`, it is a no-op and NOTHING is charged. On insufficient credits the tool returns a ' +
180
+ 'clear error with your balance and a top-up link. A failed enrichment is always refunded, so a ' +
181
+ 'surfaced error is safe to retry. Provenance (source, insights inclusion) is left unchanged.',
182
+ zodSchema: EnrichPersonaInputSchema,
183
+ handler: (args, deps) => enrichPersona(args, deps),
184
+ }),
152
185
  defineTool({
153
186
  name: 'list_reports',
154
187
  description: 'List the caller\'s past `clien_research` runs (newest first, paginated by `limit`). ' +
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clien-ai/mcp",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "Clien.ai MCP server — deep product research from Claude Code.",
5
5
  "keywords": [
6
6
  "mcp",