@trazum/mcp 1.28.0 → 1.29.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 CHANGED
@@ -29,7 +29,7 @@ because "MCP server" reads like infrastructure and this is not.
29
29
  | --- | --- |
30
30
  | `check_prompt` | Does this prompt fit `maxTokens`? And if not, would optimising it fit? |
31
31
  | `optimize_prompt` | The shorter text, the token counts either side, what the difference is worth per month, and any advisories. |
32
- | `profile_usage` | Where the money went, from a usage log passed as text: the spend split, per label and per model, whether caching paid for itself, and the levers that would actually move the bill. `label`, `since`/`until` and `previous_log` drill down and compare; `what_if` prices the same calls on another model — arithmetic, not advice, and it says so. The one tool whose figures are exact — they are the provider's own billed counts. |
32
+ | `profile_usage` | Where the money went, from a usage log passed as text: the spend split, per label and per model, whether caching paid for itself, and the levers that would actually move the bill. `label`, `since`/`until` and `previous_log` drill down and compare; `what_if` prices the same calls on another model — arithmetic, not advice, and it says so. `pricing_overlay` takes the same JSON a `--pricing` overlay file holds, as text — models it adds or overrides price the whole report, and the report says the overlay is in effect. The one tool whose figures are exact — they are the provider's own billed counts. |
33
33
  | `list_models` | Prices, context windows and cacheable minimums, with the date the table was reviewed. |
34
34
 
35
35
  `check_prompt` is the one worth wiring up. It has **three** outcomes rather than
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SAAU,CAAC;AA+MxC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAY,CAAC;AAmxBvC,sEAAsE;AACtE,eAAO,MAAM,KAAK,EAAE,SAAS,cAAc,EAAuC,CAAC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,SAAU,CAAC;AA+MxC;;;;;GAKG;AACH,eAAO,MAAM,aAAa,UAAY,CAAC;AAo1BvC,sEAAsE;AACtE,eAAO,MAAM,KAAK,EAAE,SAAS,cAAc,EAAuC,CAAC"}
package/dist/tools.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BUNDLED_CATALOGUE, PRICING_LAST_REVIEWED, UNLABELLED, billLevers, cacheEconomics, cacheHitRate, driversBetween, formatUsd, reviewAgeDays, listModels, optimize, contextPressure, profileUsage, repriceProfile, } from '@trazum/core';
1
+ import { BUNDLED_CATALOGUE, MAX_PRICING_BYTES, PRICING_LAST_REVIEWED, PricingOverlayError, UNLABELLED, billLevers, cacheEconomics, cacheHitRate, catalogueFromOverlay, driversBetween, formatUsd, reviewAgeDays, listModels, optimize, contextPressure, profileUsage, repriceProfile, } from '@trazum/core';
2
2
  import { InvalidArguments } from './rpc.js';
3
3
  /**
4
4
  * The tools, kept in one file so the whole surface an agent can reach reads in one
@@ -275,6 +275,17 @@ const PROFILE = {
275
275
  + 'impossible rather than priced as cheap, and spend already on that model stays out '
276
276
  + 'of the difference. An id this catalogue cannot price is an error, never silence.',
277
277
  },
278
+ pricing_overlay: {
279
+ type: 'string',
280
+ minLength: 1,
281
+ maxLength: MAX_PRICING_BYTES,
282
+ description: 'The same JSON document a --pricing overlay file holds, passed as text — never a '
283
+ + 'file path. Adds models the bundled catalogue does not know and overrides prices '
284
+ + 'for ones it does; every figure in the report, including what_if, is then priced '
285
+ + 'under it, and the report says the overlay is in effect. Requires "lastReviewed" '
286
+ + 'and a non-empty "models" object; a malformed overlay is an error naming the '
287
+ + 'problem, never a report silently priced from the bundled table.',
288
+ },
278
289
  },
279
290
  required: ['log'],
280
291
  additionalProperties: false,
@@ -319,14 +330,39 @@ const PROFILE = {
319
330
  throw new InvalidArguments('since is at or after until, so the window contains no time at all');
320
331
  }
321
332
  const windowed = sinceMs !== undefined || untilMs !== undefined;
322
- const report = profileUsage(log, { catalogue: BUNDLED_CATALOGUE, label: onlyLabel, sinceMs, untilMs });
333
+ /**
334
+ * The catalogue for this run: the caller's overlay applied over the
335
+ * bundled table, or the bundled table alone — the same layering as the
336
+ * CLI's `--pricing`, minus the file. The overlay travels as text because
337
+ * this server takes no paths, and a bad one is refused with the parser's
338
+ * own reason rather than priced from the bundled table as if nothing had
339
+ * been asked.
340
+ */
341
+ const overlayRaw = args.pricing_overlay;
342
+ let catalogue = BUNDLED_CATALOGUE;
343
+ if (overlayRaw !== undefined) {
344
+ if (typeof overlayRaw !== 'string')
345
+ throw new InvalidArguments('pricing_overlay must be a string');
346
+ if (overlayRaw.length > MAX_PRICING_BYTES) {
347
+ throw new InvalidArguments(`pricing_overlay is ${overlayRaw.length} characters, over the ${MAX_PRICING_BYTES} limit`);
348
+ }
349
+ try {
350
+ catalogue = catalogueFromOverlay(overlayRaw, 'pricing_overlay');
351
+ }
352
+ catch (error) {
353
+ if (error instanceof PricingOverlayError)
354
+ throw new InvalidArguments(error.message);
355
+ throw error;
356
+ }
357
+ }
358
+ const report = profileUsage(log, { catalogue, label: onlyLabel, sinceMs, untilMs });
323
359
  /**
324
360
  * The drill-downs' one rule, same as the CLI: a filter matching nothing is
325
361
  * an error naming what exists, never a silent report over zero calls that
326
362
  * an agent would read as "this workload is free" or "this period is free".
327
363
  */
328
364
  if ((onlyLabel !== undefined || windowed) && report.total.calls === 0 && report.unpriced.calls === 0) {
329
- const unfiltered = profileUsage(log, { catalogue: BUNDLED_CATALOGUE });
365
+ const unfiltered = profileUsage(log, { catalogue });
330
366
  if (unfiltered.total.calls > 0 || unfiltered.unpriced.calls > 0) {
331
367
  if (onlyLabel !== undefined && !unfiltered.byLabel.some((e) => e.label === onlyLabel)) {
332
368
  const available = unfiltered.byLabel
@@ -349,8 +385,10 @@ const PROFILE = {
349
385
  const gaps = () => {
350
386
  if (report.unpricedModels.length > 0) {
351
387
  lines.push(`${count(report.unpriced.calls, 'call')} are not in these totals — the pricing `
352
- + `catalogue does not know: ${report.unpricedModels.join(', ')}. The CLI can price `
353
- + 'them with a pricing overlay (trazum profile --pricing).');
388
+ + `catalogue does not know: ${report.unpricedModels.join(', ')}. `
389
+ + (catalogue === BUNDLED_CATALOGUE
390
+ ? 'A pricing_overlay argument can price them.'
391
+ : 'The overlay in effect does not name them either.'));
354
392
  }
355
393
  if (report.skippedLines.length > 0) {
356
394
  const shown = report.skippedLines.slice(0, 10).join(', ');
@@ -371,13 +409,24 @@ const PROFILE = {
371
409
  // The one Trazum surface whose figures are NOT estimates, said out loud
372
410
  // because every sibling tool here carries the ±10% band.
373
411
  lines.push(`${count(total.calls, 'call')} · ${formatUsd(total.totalUsd)} — exact billed token`
374
- + ` counts from the log, not estimates; prices reviewed ${PRICING_LAST_REVIEWED}.`);
412
+ + ` counts from the log, not estimates; prices reviewed ${catalogue.lastReviewed}.`);
413
+ /**
414
+ * The overlay is part of the answer, not plumbing: every dollar above was
415
+ * priced under it, so a reader comparing this report against one priced
416
+ * from the bundled table must be able to see they are not the same table.
417
+ */
418
+ if (catalogue !== BUNDLED_CATALOGUE) {
419
+ const added = catalogue.addedModels.length;
420
+ const overridden = catalogue.overriddenModels.length;
421
+ lines.push(`A pricing overlay is in effect: ${count(added, 'model')} added, `
422
+ + `${overridden} overridden. Figures are priced under it, not the bundled table.`);
423
+ }
375
424
  /**
376
425
  * Said only when old enough to matter, and loud then: a stale table
377
426
  * qualifies every dollar above, and unlike a skipped line it does not
378
427
  * name its own size — the error is exactly whatever the provider changed.
379
428
  */
380
- const pricingAge = reviewAgeDays(PRICING_LAST_REVIEWED, new Date());
429
+ const pricingAge = reviewAgeDays(catalogue.lastReviewed, new Date());
381
430
  if (pricingAge !== null && pricingAge > 45) {
382
431
  lines.push(`That review was ${pricingAge} days ago, past the 45 this tool considers current. If the`
383
432
  + ' provider changed prices since, every figure here is off by exactly that change —'
@@ -534,7 +583,7 @@ const PROFILE = {
534
583
  }
535
584
  }
536
585
  lines.push('', '--- what would actually move this bill ---');
537
- const levers = billLevers(report, { catalogue: BUNDLED_CATALOGUE });
586
+ const levers = billLevers(report, { catalogue });
538
587
  if (report.byLabel.length === 1 && report.byLabel[0].label === UNLABELLED) {
539
588
  lines.push('None of these calls carried a label, so this is every workload in one row. Add "label" '
540
589
  + 'to the record and the levers split by workload, the grouping a decision is made at.');
@@ -588,6 +637,17 @@ const PROFILE = {
588
637
  + ' can catch, rather than a workload that is uniformly expensive.');
589
638
  }
590
639
  }
640
+ /**
641
+ * The figure that survives a small log: the percentiles above refuse thin
642
+ * slices, but a maximum is a fact at any count — and it is the number a
643
+ * per-conversation budget judges.
644
+ */
645
+ if (report.sessionCosts.length === 0 && report.sessionSpend !== null) {
646
+ lines.push(`${report.sessionSpend.sessions} conversation${report.sessionSpend.sessions === 1 ? '' : 's'}`
647
+ + ` in this log; the most expensive cost ${formatUsd(report.sessionSpend.maxUsd)}. Too few`
648
+ + ' per workload for a percentile — a maximum is a fact at any count, and it is the figure'
649
+ + ' a per-conversation budget (--max-session-usd) judges.');
650
+ }
591
651
  lines.push('', '--- truncation ---');
592
652
  if (total.stopReasonCalls === 0) {
593
653
  lines.push('Whether any answers were cut off could not be measured — no call carries a stop '
@@ -642,7 +702,7 @@ const PROFILE = {
642
702
  // against the whole previous log would call every sibling workload a
643
703
  // vanished saving.
644
704
  const previous = profileUsage(previousLog, {
645
- catalogue: BUNDLED_CATALOGUE,
705
+ catalogue,
646
706
  label: onlyLabel,
647
707
  sinceMs,
648
708
  untilMs,
@@ -716,7 +776,7 @@ const PROFILE = {
716
776
  * the caller that can stop growing before the window refuses a call.
717
777
  */
718
778
  {
719
- const pressures = contextPressure(report, BUNDLED_CATALOGUE);
779
+ const pressures = contextPressure(report, catalogue);
720
780
  if (pressures.length > 0) {
721
781
  lines.push('');
722
782
  lines.push('Approaching the context window:');
@@ -791,10 +851,10 @@ const PROFILE = {
791
851
  if (whatIfModel !== undefined) {
792
852
  if (typeof whatIfModel !== 'string')
793
853
  throw new InvalidArguments('what_if must be a string');
794
- const whatIf = repriceProfile(report, whatIfModel, BUNDLED_CATALOGUE);
854
+ const whatIf = repriceProfile(report, whatIfModel, catalogue);
795
855
  if (whatIf === null) {
796
856
  throw new InvalidArguments(`what_if names a model this catalogue cannot price: "${whatIfModel}". Priced models: `
797
- + BUNDLED_CATALOGUE.models.map((m) => m.id).join(', '));
857
+ + catalogue.models.map((m) => m.id).join(', '));
798
858
  }
799
859
  lines.push('');
800
860
  lines.push(`These exact calls on ${whatIf.target.displayName}. This is multiplication, not advice: `
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trazum/mcp",
3
- "version": "1.28.0",
3
+ "version": "1.29.0",
4
4
  "description": "Trazum as an MCP server: let an agent price and budget its own prompts before it sends them.",
5
5
  "license": "MIT",
6
6
  "author": "David Mu\u00f1oz Rey",
@@ -37,7 +37,7 @@
37
37
  "prepublishOnly": "npm run build && npm test"
38
38
  },
39
39
  "dependencies": {
40
- "@trazum/core": "1.28.0"
40
+ "@trazum/core": "1.29.0"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^26.2.0",
package/src/tools.ts CHANGED
@@ -1,10 +1,13 @@
1
1
  import {
2
2
  BUNDLED_CATALOGUE,
3
+ MAX_PRICING_BYTES,
3
4
  PRICING_LAST_REVIEWED,
5
+ PricingOverlayError,
4
6
  UNLABELLED,
5
7
  billLevers,
6
8
  cacheEconomics,
7
9
  cacheHitRate,
10
+ catalogueFromOverlay,
8
11
  driversBetween,
9
12
  formatUsd,
10
13
  reviewAgeDays,
@@ -332,6 +335,18 @@ const PROFILE: ToolDefinition = {
332
335
  + 'impossible rather than priced as cheap, and spend already on that model stays out '
333
336
  + 'of the difference. An id this catalogue cannot price is an error, never silence.',
334
337
  },
338
+ pricing_overlay: {
339
+ type: 'string',
340
+ minLength: 1,
341
+ maxLength: MAX_PRICING_BYTES,
342
+ description:
343
+ 'The same JSON document a --pricing overlay file holds, passed as text — never a '
344
+ + 'file path. Adds models the bundled catalogue does not know and overrides prices '
345
+ + 'for ones it does; every figure in the report, including what_if, is then priced '
346
+ + 'under it, and the report says the overlay is in effect. Requires "lastReviewed" '
347
+ + 'and a non-empty "models" object; a malformed overlay is an error naming the '
348
+ + 'problem, never a report silently priced from the bundled table.',
349
+ },
335
350
  },
336
351
  required: ['log'],
337
352
  additionalProperties: false,
@@ -375,14 +390,39 @@ const PROFILE: ToolDefinition = {
375
390
  }
376
391
  const windowed = sinceMs !== undefined || untilMs !== undefined;
377
392
 
378
- const report = profileUsage(log, { catalogue: BUNDLED_CATALOGUE, label: onlyLabel, sinceMs, untilMs });
393
+ /**
394
+ * The catalogue for this run: the caller's overlay applied over the
395
+ * bundled table, or the bundled table alone — the same layering as the
396
+ * CLI's `--pricing`, minus the file. The overlay travels as text because
397
+ * this server takes no paths, and a bad one is refused with the parser's
398
+ * own reason rather than priced from the bundled table as if nothing had
399
+ * been asked.
400
+ */
401
+ const overlayRaw = args.pricing_overlay;
402
+ let catalogue = BUNDLED_CATALOGUE;
403
+ if (overlayRaw !== undefined) {
404
+ if (typeof overlayRaw !== 'string') throw new InvalidArguments('pricing_overlay must be a string');
405
+ if (overlayRaw.length > MAX_PRICING_BYTES) {
406
+ throw new InvalidArguments(
407
+ `pricing_overlay is ${overlayRaw.length} characters, over the ${MAX_PRICING_BYTES} limit`,
408
+ );
409
+ }
410
+ try {
411
+ catalogue = catalogueFromOverlay(overlayRaw, 'pricing_overlay');
412
+ } catch (error) {
413
+ if (error instanceof PricingOverlayError) throw new InvalidArguments(error.message);
414
+ throw error;
415
+ }
416
+ }
417
+
418
+ const report = profileUsage(log, { catalogue, label: onlyLabel, sinceMs, untilMs });
379
419
  /**
380
420
  * The drill-downs' one rule, same as the CLI: a filter matching nothing is
381
421
  * an error naming what exists, never a silent report over zero calls that
382
422
  * an agent would read as "this workload is free" or "this period is free".
383
423
  */
384
424
  if ((onlyLabel !== undefined || windowed) && report.total.calls === 0 && report.unpriced.calls === 0) {
385
- const unfiltered = profileUsage(log, { catalogue: BUNDLED_CATALOGUE });
425
+ const unfiltered = profileUsage(log, { catalogue });
386
426
  if (unfiltered.total.calls > 0 || unfiltered.unpriced.calls > 0) {
387
427
  if (onlyLabel !== undefined && !unfiltered.byLabel.some((e) => e.label === onlyLabel)) {
388
428
  const available = unfiltered.byLabel
@@ -413,8 +453,10 @@ const PROFILE: ToolDefinition = {
413
453
  if (report.unpricedModels.length > 0) {
414
454
  lines.push(
415
455
  `${count(report.unpriced.calls, 'call')} are not in these totals — the pricing `
416
- + `catalogue does not know: ${report.unpricedModels.join(', ')}. The CLI can price `
417
- + 'them with a pricing overlay (trazum profile --pricing).',
456
+ + `catalogue does not know: ${report.unpricedModels.join(', ')}. `
457
+ + (catalogue === BUNDLED_CATALOGUE
458
+ ? 'A pricing_overlay argument can price them.'
459
+ : 'The overlay in effect does not name them either.'),
418
460
  );
419
461
  }
420
462
  if (report.skippedLines.length > 0) {
@@ -443,14 +485,27 @@ const PROFILE: ToolDefinition = {
443
485
  // because every sibling tool here carries the ±10% band.
444
486
  lines.push(
445
487
  `${count(total.calls, 'call')} · ${formatUsd(total.totalUsd)} — exact billed token`
446
- + ` counts from the log, not estimates; prices reviewed ${PRICING_LAST_REVIEWED}.`,
488
+ + ` counts from the log, not estimates; prices reviewed ${catalogue.lastReviewed}.`,
447
489
  );
490
+ /**
491
+ * The overlay is part of the answer, not plumbing: every dollar above was
492
+ * priced under it, so a reader comparing this report against one priced
493
+ * from the bundled table must be able to see they are not the same table.
494
+ */
495
+ if (catalogue !== BUNDLED_CATALOGUE) {
496
+ const added = catalogue.addedModels.length;
497
+ const overridden = catalogue.overriddenModels.length;
498
+ lines.push(
499
+ `A pricing overlay is in effect: ${count(added, 'model')} added, `
500
+ + `${overridden} overridden. Figures are priced under it, not the bundled table.`,
501
+ );
502
+ }
448
503
  /**
449
504
  * Said only when old enough to matter, and loud then: a stale table
450
505
  * qualifies every dollar above, and unlike a skipped line it does not
451
506
  * name its own size — the error is exactly whatever the provider changed.
452
507
  */
453
- const pricingAge = reviewAgeDays(PRICING_LAST_REVIEWED, new Date());
508
+ const pricingAge = reviewAgeDays(catalogue.lastReviewed, new Date());
454
509
  if (pricingAge !== null && pricingAge > 45) {
455
510
  lines.push(
456
511
  `That review was ${pricingAge} days ago, past the 45 this tool considers current. If the`
@@ -636,7 +691,7 @@ const PROFILE: ToolDefinition = {
636
691
  }
637
692
 
638
693
  lines.push('', '--- what would actually move this bill ---');
639
- const levers = billLevers(report, { catalogue: BUNDLED_CATALOGUE });
694
+ const levers = billLevers(report, { catalogue });
640
695
  if (report.byLabel.length === 1 && report.byLabel[0]!.label === UNLABELLED) {
641
696
  lines.push(
642
697
  'None of these calls carried a label, so this is every workload in one row. Add "label" '
@@ -710,6 +765,19 @@ const PROFILE: ToolDefinition = {
710
765
  );
711
766
  }
712
767
  }
768
+ /**
769
+ * The figure that survives a small log: the percentiles above refuse thin
770
+ * slices, but a maximum is a fact at any count — and it is the number a
771
+ * per-conversation budget judges.
772
+ */
773
+ if (report.sessionCosts.length === 0 && report.sessionSpend !== null) {
774
+ lines.push(
775
+ `${report.sessionSpend.sessions} conversation${report.sessionSpend.sessions === 1 ? '' : 's'}`
776
+ + ` in this log; the most expensive cost ${formatUsd(report.sessionSpend.maxUsd)}. Too few`
777
+ + ' per workload for a percentile — a maximum is a fact at any count, and it is the figure'
778
+ + ' a per-conversation budget (--max-session-usd) judges.',
779
+ );
780
+ }
713
781
 
714
782
  lines.push('', '--- truncation ---');
715
783
  if (total.stopReasonCalls === 0) {
@@ -773,7 +841,7 @@ const PROFILE: ToolDefinition = {
773
841
  // against the whole previous log would call every sibling workload a
774
842
  // vanished saving.
775
843
  const previous = profileUsage(previousLog, {
776
- catalogue: BUNDLED_CATALOGUE,
844
+ catalogue,
777
845
  label: onlyLabel,
778
846
  sinceMs,
779
847
  untilMs,
@@ -864,7 +932,7 @@ const PROFILE: ToolDefinition = {
864
932
  * the caller that can stop growing before the window refuses a call.
865
933
  */
866
934
  {
867
- const pressures = contextPressure(report, BUNDLED_CATALOGUE);
935
+ const pressures = contextPressure(report, catalogue);
868
936
  if (pressures.length > 0) {
869
937
  lines.push('');
870
938
  lines.push('Approaching the context window:');
@@ -951,11 +1019,11 @@ const PROFILE: ToolDefinition = {
951
1019
  const whatIfModel = args.what_if;
952
1020
  if (whatIfModel !== undefined) {
953
1021
  if (typeof whatIfModel !== 'string') throw new InvalidArguments('what_if must be a string');
954
- const whatIf = repriceProfile(report, whatIfModel, BUNDLED_CATALOGUE);
1022
+ const whatIf = repriceProfile(report, whatIfModel, catalogue);
955
1023
  if (whatIf === null) {
956
1024
  throw new InvalidArguments(
957
1025
  `what_if names a model this catalogue cannot price: "${whatIfModel}". Priced models: `
958
- + BUNDLED_CATALOGUE.models.map((m) => m.id).join(', '),
1026
+ + catalogue.models.map((m) => m.id).join(', '),
959
1027
  );
960
1028
  }
961
1029
  lines.push('');