@withpica/mcp-server 2.95.4 → 2.96.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +2 -2
  3. package/dist/lib/changelog.generated.d.ts +2 -2
  4. package/dist/lib/changelog.generated.d.ts.map +1 -1
  5. package/dist/lib/changelog.generated.js +2 -2
  6. package/dist/lib/changelog.generated.js.map +1 -1
  7. package/dist/prompts/creator-question-atlas.d.ts.map +1 -1
  8. package/dist/prompts/creator-question-atlas.js +11 -0
  9. package/dist/prompts/creator-question-atlas.js.map +1 -1
  10. package/dist/tools/credits.js +1 -1
  11. package/dist/tools/credits.js.map +1 -1
  12. package/dist/tools/dashboard.d.ts.map +1 -1
  13. package/dist/tools/dashboard.js +2 -1
  14. package/dist/tools/dashboard.js.map +1 -1
  15. package/dist/tools/deprecations.d.ts +14 -7
  16. package/dist/tools/deprecations.d.ts.map +1 -1
  17. package/dist/tools/deprecations.js +24 -17
  18. package/dist/tools/deprecations.js.map +1 -1
  19. package/dist/tools/discovery.d.ts +54 -1
  20. package/dist/tools/discovery.d.ts.map +1 -1
  21. package/dist/tools/discovery.js +203 -14
  22. package/dist/tools/discovery.js.map +1 -1
  23. package/dist/tools/enrichment.js +1 -1
  24. package/dist/tools/enrichment.js.map +1 -1
  25. package/dist/tools/index.d.ts +18 -0
  26. package/dist/tools/index.d.ts.map +1 -1
  27. package/dist/tools/index.js +36 -5
  28. package/dist/tools/index.js.map +1 -1
  29. package/dist/tools/metadata.d.ts.map +1 -1
  30. package/dist/tools/metadata.js +30 -10
  31. package/dist/tools/metadata.js.map +1 -1
  32. package/dist/tools/recovery-hints.d.ts.map +1 -1
  33. package/dist/tools/recovery-hints.js +23 -1
  34. package/dist/tools/recovery-hints.js.map +1 -1
  35. package/dist/tools/settings.d.ts.map +1 -1
  36. package/dist/tools/settings.js +3 -2
  37. package/dist/tools/settings.js.map +1 -1
  38. package/dist/tools/subscription.d.ts +99 -13
  39. package/dist/tools/subscription.d.ts.map +1 -1
  40. package/dist/tools/subscription.js +403 -8
  41. package/dist/tools/subscription.js.map +1 -1
  42. package/package.json +2 -2
  43. package/server.json +2 -2
@@ -1,4 +1,44 @@
1
1
  // Copyright (c) 2025-2026 Withpica Ltd. All rights reserved.
2
+ /* eslint-disable @typescript-eslint/no-explicit-any -- ToolExecutor signature uses Record<string, any> */
3
+ /**
4
+ * Subscription + billing tools — ADR-210 Phase 2, extended by the MPP pay
5
+ * rail (spec 2026-08-24 WS-B).
6
+ *
7
+ * Three MCP tools that surface the explicit billing read + action layer
8
+ * complementing the ambient `_meta.session_state.billing_slice` shipped
9
+ * in Phase 1:
10
+ *
11
+ * - pica_subscription_status (read; readOnlyHint=true)
12
+ * Wraps `GET /api/admin/subscription` and flattens it into the card
13
+ * below (`SubscriptionStatusFlat`), composing a templated `summary`
14
+ * line the agent uses verbatim. It is no longer the 9 fields ADR-210
15
+ * § Phase 2 specified: two trial fields came off on 2026-08-21, and
16
+ * WS-B added `pricing` + `held`, each present only when the route
17
+ * measured it. Read the interface, not a count.
18
+ *
19
+ * - pica_subscription_manage (action; readOnlyHint=false)
20
+ * Single-verb dispatcher over the existing
21
+ * `POST /api/admin/subscription` (subscribe / upgrade) and
22
+ * `POST /api/admin/subscription/portal` (manage / cancel) routes.
23
+ * Returns a `resource_link` content block (universal MCP floor)
24
+ * and uses `elicitation/create url` only when the client
25
+ * advertises `capabilities.elicitation.url` per ADR-200 Phase 1
26
+ * (capability-gated; `feedback_mcp_sdk_capability_gates_elicitation.md`).
27
+ *
28
+ * - pica_billing_pay (read; readOnlyHint=true)
29
+ * Wraps `POST /api/admin/billing/pay-link`. Mints a link for one
30
+ * offer — resident_month / unlock / settle — and never charges: an
31
+ * agent POSTs the link with a Machine Payments credential, or a
32
+ * person opens it and pays by card. The refusals the ROUTE itself
33
+ * composes — billing disabled, nothing held, offer moved — come back
34
+ * as structured results rather than thrown ApiErrors. A 4xx from the
35
+ * auth wrapper in front of it is quoted, never re-interpreted; a 4xx
36
+ * carrying nothing quotable, and everything from 500 up, is re-thrown
37
+ * (`payRefusal` below is the single place that decides which).
38
+ *
39
+ * No new Stripe SDK calls — every route here is reused as-is.
40
+ */
41
+ import { ApiError, } from "@withpica/mcp-sdk";
2
42
  // ADR-205 D7: enterprise is sales-led, not bookable through Checkout.
3
43
  // Mirror the route-layer allowlist here for a better tool-side error
4
44
  // message before the request leaves the agent.
@@ -9,6 +49,49 @@ const VALID_PAID_TIERS = [
9
49
  "established",
10
50
  ];
11
51
  const VALID_ACTIONS = ["subscribe", "upgrade", "manage", "cancel"];
52
+ /**
53
+ * The offers `POST /api/admin/billing/pay-link` accepts. Checked here as well
54
+ * as at the route because an unknown offer is a mistake the agent can fix
55
+ * from the tool's own answer, without spending a round trip on a 400.
56
+ */
57
+ const VALID_PAY_OFFERS = [
58
+ "resident_month",
59
+ "unlock",
60
+ "settle",
61
+ ];
62
+ /**
63
+ * Where a refused mint sends the agent next, by the route's error code.
64
+ * Mirrored in `RECOVERY_HINTS.pica_billing_pay` (recovery-hints.ts), which is
65
+ * what `pica_tool_details` reads; this copy is what the refusal itself
66
+ * carries, so an agent that never opens tool details still gets the pointer.
67
+ */
68
+ const NEXT_TOOL_FOR_PAY_ERROR = {
69
+ nothing_held_for_entity: "pica_dashboard_briefing",
70
+ offer_no_longer_applies: "pica_subscription_status",
71
+ };
72
+ /**
73
+ * The pay-link route's own flag-off body, verbatim
74
+ * (`app/api/admin/billing/pay-link/route.ts`: `{ error: "billing not enabled" }`).
75
+ *
76
+ * Named rather than inlined because it is the ONE 403 that licenses a
77
+ * statement about money, and a reader needs to be able to grep both ends of
78
+ * that coupling. If the route ever reworded it, this comparison stops
79
+ * matching and every 403 falls through to the access-refusal branch below —
80
+ * which says less, but says nothing false.
81
+ */
82
+ const BILLING_DISABLED_ERROR = "billing not enabled";
83
+ function isRecord(value) {
84
+ return typeof value === "object" && value !== null && !Array.isArray(value);
85
+ }
86
+ /** The first candidate that is a non-blank string. */
87
+ function firstString(...candidates) {
88
+ for (const candidate of candidates) {
89
+ if (typeof candidate === "string" && candidate.trim().length > 0) {
90
+ return candidate;
91
+ }
92
+ }
93
+ return undefined;
94
+ }
12
95
  /** The stored billing state in the vocabulary ADR-276 actually uses. */
13
96
  export function planFor(billingState) {
14
97
  if (billingState === "active")
@@ -18,11 +101,23 @@ export function planFor(billingState) {
18
101
  return "free_runway";
19
102
  }
20
103
  /**
21
- * Compose the flat 9-field response from the existing GET admin route's
22
- * shape. Mirrors `getOrgBillingSlice`'s "no meaningful cap" rule for
23
- * `capacity_pct` (0 whenever current_tier is null OR enterprise) and
24
- * carries through `overflow.recommendedTier` (already
25
- * `inferTierFromCount`-derived) per Stage 1 Q2.
104
+ * Compose `SubscriptionStatusFlat` from the GET admin route's shape: eight
105
+ * fields that are always present (`billing_state`, `plan`, `current_tier`,
106
+ * `capacity_used`, `capacity_limit`, `capacity_pct`, `recommended_tier`,
107
+ * `summary`) plus `pricing` and `held`, each emitted ONLY when the route
108
+ * measured it.
109
+ *
110
+ * ⚠️ This opened by quoting a FIELD COUNT until 2026-08-26, and that count had
111
+ * been wrong since 08-21 — `trial_days_remaining` and `trial_ends_at` came off
112
+ * then, and WS-B added the two optional keys. A count is the one thing a
113
+ * docstring cannot keep true across a field change, and it rots silently
114
+ * because nothing compiles against it. Do not reintroduce one: name the fields
115
+ * (above) or point at the interface, which the compiler keeps honest.
116
+ *
117
+ * Mirrors `getOrgBillingSlice`'s "no meaningful cap" rule for `capacity_pct`
118
+ * (0 whenever current_tier is null OR enterprise) and carries through
119
+ * `overflow.recommendedTier` (already `inferTierFromCount`-derived) per
120
+ * Stage 1 Q2.
26
121
  *
27
122
  * Exported for unit tests.
28
123
  */
@@ -41,6 +136,11 @@ export function flattenStatus(status) {
41
136
  const capacityPct = hasMeaningfulCap
42
137
  ? Math.round((capacityUsed / capacityLimit) * 100)
43
138
  : 0;
139
+ // WS-B: both arrive `null` when billing enforcement is off, and are absent
140
+ // entirely against a deployment whose route predates them. Either way there
141
+ // is nothing to say, so neither key is emitted.
142
+ const pricing = status.pricing ?? undefined;
143
+ const held = status.held ?? undefined;
44
144
  return {
45
145
  billing_state: status.billingState,
46
146
  plan: planFor(status.billingState),
@@ -52,9 +152,46 @@ export function flattenStatus(status) {
52
152
  summary: composeSummary({
53
153
  billing_state: status.billingState,
54
154
  capacity_used: capacityUsed,
155
+ pricing,
156
+ held,
55
157
  }),
158
+ ...(pricing ? { pricing } : {}),
159
+ ...(held ? { held } : {}),
56
160
  };
57
161
  }
162
+ /** `n` with the noun pluralised — "1 song", "7 songs". */
163
+ function plural(n, noun) {
164
+ return `${n} ${noun}${n === 1 ? "" : "s"}`;
165
+ }
166
+ /**
167
+ * The price half of the summary, built ENTIRELY from the figures the route
168
+ * sent. No amount of money appears here on purpose: the money is worded once,
169
+ * by the pay-link route's offer labels (`formatMoney` over the org's own
170
+ * currency, whose minor-unit conventions differ from ICU's for four of the
171
+ * ten supported currencies). A second wording here would be a second home for
172
+ * the price — the defect FIX_LOG 2026-08-20 records as having had ten.
173
+ *
174
+ * Returns `null` when there is nothing measured to say, so the caller appends
175
+ * nothing rather than a sentence about absence.
176
+ *
177
+ * Exported for unit tests.
178
+ */
179
+ export function composePriceLine(pricing, held) {
180
+ const clauses = [];
181
+ if (pricing) {
182
+ clauses.push(`Deep processing is free for your first ` +
183
+ `${plural(pricing.freeRunwayDeepProcesses, "song")}, and a resident ` +
184
+ `month includes ${plural(pricing.residentIncludedDeepProcesses, "song")}.`);
185
+ }
186
+ // count === 0 is the common case and says nothing worth a sentence; saying
187
+ // "0 findings are held" invites an agent to offer a pay link nobody needs.
188
+ if (held && held.count > 0) {
189
+ clauses.push(`${plural(held.count, "finding")} across ` +
190
+ `${plural(held.entities, "work")} are held until one of the offers ` +
191
+ `is paid — ask for a pay link to see the price and how to pay it.`);
192
+ }
193
+ return clauses.length > 0 ? clauses.join(" ") : null;
194
+ }
58
195
  /**
59
196
  * The sentence an agent says out loud. Server-side template (Stage 1 Q1 option
60
197
  * A) so wording does not vary across connectors.
@@ -84,18 +221,163 @@ export function flattenStatus(status) {
84
221
  export function composeSummary(fields) {
85
222
  const { billing_state, capacity_used } = fields;
86
223
  const works = `${capacity_used} active work${capacity_used === 1 ? "" : "s"}`;
224
+ const priceLine = composePriceLine(fields.pricing, fields.held);
225
+ const withPrice = (base) => priceLine ? `${base} ${priceLine}` : base;
87
226
  if (billing_state === "hibernated") {
88
- return (`Deep-processing is paused on this catalogue because a cycle went unpaid. ` +
227
+ return withPrice(`Deep-processing is paused on this catalogue because a cycle went unpaid. ` +
89
228
  `Nothing has been deleted and you can still read and export everything ` +
90
229
  `(${works} held). Becoming a resident again switches deep-processing back on.`);
91
230
  }
92
231
  if (billing_state === "active") {
93
- return `You're a resident — one flat fee per 30-day cycle, nothing auto-renews. ${works}.`;
232
+ return withPrice(`You're a resident — one flat fee per 30-day cycle, nothing auto-renews. ${works}.`);
94
233
  }
95
234
  // trial === the free runway. No clock, no card, no countdown.
96
- return (`You're on the free runway: no card, no countdown, and you are not charged ` +
235
+ return withPrice(`You're on the free runway: no card, no countdown, and you are not charged ` +
97
236
  `for holding a catalogue. ${works} so far.`);
98
237
  }
238
+ /**
239
+ * Turn a pay-link 4xx into the structured refusal an agent can act on, or
240
+ * `null` when the caller must keep propagating it — 5xx, timeouts, network
241
+ * failures, and any 403 whose body carries no message worth quoting.
242
+ *
243
+ * The 403 branch is the delicate one: exactly one 403 on this path is about
244
+ * money, and the rest are about access. See its comment.
245
+ *
246
+ * Exported for unit tests.
247
+ */
248
+ export function payRefusal(err, offer, entityId) {
249
+ if (!(err instanceof ApiError))
250
+ return null;
251
+ if (err.status !== 403 && err.status !== 400 && err.status !== 409) {
252
+ return null;
253
+ }
254
+ const body = parsePayErrorBody(err);
255
+ const code = typeof body.error === "string" ? body.error : undefined;
256
+ if (err.status === 403) {
257
+ // ⚠️ ONLY the route's own flag-off body may license a claim about money.
258
+ //
259
+ // This branch answered every 403 with "nothing is owed", and the route is
260
+ // not the only thing on this path that answers 403. It sits behind
261
+ // `withDualAuth`, whose scope denial is
262
+ // `{ error: { code: "INSUFFICIENT_SCOPE", message, remedy } }` — an
263
+ // OBJECT, so the string `code` above is undefined — and the
264
+ // team-permission guard answers `{ error: "<message>", code: "TEAM_..." }`.
265
+ // Both mean "this connection may not ask", which is not a statement about
266
+ // a bill, and the agent was relaying it as one.
267
+ if (code === BILLING_DISABLED_ERROR) {
268
+ return {
269
+ content: [
270
+ {
271
+ type: "text",
272
+ text: "pica is not charging on this deployment, so there is no pay link " +
273
+ "to mint and nothing is owed. Everything the catalogue does is " +
274
+ "available; no offer applies.",
275
+ },
276
+ ],
277
+ structuredContent: {
278
+ kind: "pica.error.billing_not_enabled",
279
+ version: 1,
280
+ data: { offer, reason: BILLING_DISABLED_ERROR },
281
+ },
282
+ isError: true,
283
+ };
284
+ }
285
+ // Any other 403 is an ACCESS refusal. Quote the refuser's own words and
286
+ // make no claim about what is or is not owed — the call never reached the
287
+ // billing engine, so nothing here knows.
288
+ const nested = isRecord(body.error) ? body.error : undefined;
289
+ const message = firstString(nested?.message, code);
290
+ // No quotable message means no honest account of WHY. Returning null hands
291
+ // the error back to the executor to re-throw, exactly as a 500 is handled:
292
+ // an opaque failure is better information than a confident wrong sentence.
293
+ if (!message)
294
+ return null;
295
+ const remedy = firstString(nested?.remedy, body.remedy);
296
+ return {
297
+ content: [
298
+ {
299
+ type: "text",
300
+ text: `pica refused to mint a pay link: ${message}. That is an access ` +
301
+ `refusal and says nothing about what is or is not owed.` +
302
+ (remedy ? ` ${remedy}` : ""),
303
+ },
304
+ ],
305
+ structuredContent: {
306
+ kind: "pica.error.forbidden",
307
+ version: 1,
308
+ data: {
309
+ offer,
310
+ ...(entityId ? { entity_id: entityId } : {}),
311
+ error: firstString(nested?.code, body.code) ?? "forbidden",
312
+ message,
313
+ ...(remedy ? { next_step: remedy } : {}),
314
+ retry_safe: false,
315
+ },
316
+ },
317
+ isError: true,
318
+ };
319
+ }
320
+ const offers = Array.isArray(body.offers)
321
+ ? body.offers
322
+ : undefined;
323
+ let text;
324
+ if (code === "nothing_held_for_entity") {
325
+ text =
326
+ "nothing is held on that work, so there is nothing to unlock. Check " +
327
+ "what is actually waiting across the catalogue before offering to pay.";
328
+ }
329
+ else if (code === "offer_no_longer_applies") {
330
+ const list = offers?.map((o) => o.label).join("; ");
331
+ text = list
332
+ ? `that offer no longer applies. What is on the table now: ${list}.`
333
+ : "that offer no longer applies, and no other offer applies either.";
334
+ }
335
+ else {
336
+ text = `that pay link could not be minted: ${code ?? err.message}.`;
337
+ }
338
+ return {
339
+ content: [{ type: "text", text }],
340
+ structuredContent: {
341
+ kind: "pica.error.offer_unavailable",
342
+ version: 1,
343
+ data: {
344
+ offer,
345
+ ...(entityId ? { entity_id: entityId } : {}),
346
+ error: code ?? "pay_link_refused",
347
+ ...(offers ? { offers } : {}),
348
+ next_tool: (code ? NEXT_TOOL_FOR_PAY_ERROR[code] : undefined) ??
349
+ "pica_subscription_status",
350
+ retry_safe: false,
351
+ },
352
+ },
353
+ isError: true,
354
+ };
355
+ }
356
+ /**
357
+ * Pull the route's JSON body back out of an `ApiError`. The SDK folds the
358
+ * response text into the message (`"API request failed: 400 <body>"`, and
359
+ * `"Authentication failed: 403 <body>"` on the auth path) rather than
360
+ * carrying a structured body — the same extraction `duplicates.ts` and
361
+ * `integrity.ts` do. Returns `{}` when the body is absent or not JSON, so
362
+ * every caller reads a `code` of `undefined` rather than throwing twice.
363
+ *
364
+ * Exported for unit tests.
365
+ */
366
+ export function parsePayErrorBody(err) {
367
+ const match = err.message.match(/^(?:API request failed|Authentication failed):\s*\d{3}\s*([\s\S]*)$/);
368
+ const text = match?.[1]?.trim();
369
+ if (!text)
370
+ return {};
371
+ try {
372
+ const parsed = JSON.parse(text);
373
+ return parsed && typeof parsed === "object"
374
+ ? parsed
375
+ : {};
376
+ }
377
+ catch {
378
+ return {};
379
+ }
380
+ }
99
381
  export class SubscriptionTools {
100
382
  pica;
101
383
  constructor(pica) {
@@ -187,8 +469,121 @@ export class SubscriptionTools {
187
469
  },
188
470
  executor: this.manage.bind(this),
189
471
  },
472
+ {
473
+ definition: {
474
+ name: "pica_billing_pay",
475
+ // read:catalog, NOT write:finances — and deliberately so. Minting a
476
+ // link mints a capability, not a charge: nothing is billed until
477
+ // whoever holds the link pays it, so a member fetching a link for
478
+ // the owner to pay is the intended flow. The route gates the same
479
+ // way (app/api/admin/billing/pay-link/route.ts).
480
+ scope: "read:catalog",
481
+ audiences: ["stdio", "http"],
482
+ tier: "read",
483
+ description: "Use when the user asks: 'how do i pay pica?', 'what does pica cost?'. " +
484
+ "Also use when pica is holding findings, or a deep process was " +
485
+ "refused for runway. Mints a pay link for one offer: resident_month " +
486
+ "(one month of residency; shows every held finding within the " +
487
+ "allowance), unlock (one work's held findings, needs entity_id), or " +
488
+ "settle (a resident's tab). Never charges by itself: an agent POSTs " +
489
+ "the link with a Machine Payments credential (Link agent wallet or " +
490
+ "Tempo), or a person opens it in a browser and pays by card. Returns " +
491
+ "the offers with amounts derived from pica's constants and the " +
492
+ "current held count. Refuses when billing enforcement is off.",
493
+ workflows: "infrastructure",
494
+ vernacular_kind: "creator-entry",
495
+ inputSchema: {
496
+ type: "object",
497
+ properties: {
498
+ offer: {
499
+ type: "string",
500
+ enum: [...VALID_PAY_OFFERS],
501
+ description: "resident_month (a 30-day cycle), unlock (one work's held " +
502
+ "findings), or settle (what a resident already owes).",
503
+ },
504
+ entity_id: {
505
+ type: "string",
506
+ description: "The work to unlock (offer = unlock).",
507
+ },
508
+ },
509
+ required: ["offer"],
510
+ additionalProperties: false,
511
+ },
512
+ annotations: {
513
+ // readOnly is honest here: this mints a link and changes nothing
514
+ // an org can see. idempotentHint is false because each mint is a
515
+ // fresh token with a fresh expiry, not the same link returned twice.
516
+ readOnlyHint: true,
517
+ destructiveHint: false,
518
+ idempotentHint: false,
519
+ openWorldHint: false,
520
+ },
521
+ },
522
+ executor: this.pay.bind(this),
523
+ },
190
524
  ];
191
525
  }
526
+ /**
527
+ * `pica_billing_pay` — hand the caller a link, and never a charge.
528
+ *
529
+ * The refusals the ROUTE composes (the flag is off; nothing is held on that
530
+ * work; that offer no longer applies) become structured results rather than
531
+ * thrown ApiErrors — a throw reaches the agent as UNKNOWN_ERROR, which
532
+ * reads as "pica is broken" when the honest answer is "there is nothing to
533
+ * pay for". `payRefusal` decides; everything it declines (5xx, timeouts,
534
+ * network failures, and a 403 with nothing quotable in it) is re-thrown
535
+ * unchanged, because an outage dressed as a tidy refusal is the worse lie.
536
+ */
537
+ async pay(args) {
538
+ const offer = args.offer;
539
+ if (!offer || !VALID_PAY_OFFERS.includes(offer)) {
540
+ return {
541
+ content: [
542
+ {
543
+ type: "text",
544
+ text: `Error: offer must be one of ${VALID_PAY_OFFERS.join(", ")}.`,
545
+ },
546
+ ],
547
+ structuredContent: {
548
+ kind: "pica.error.invalid_argument",
549
+ version: 1,
550
+ data: { argument: "offer", valid: [...VALID_PAY_OFFERS] },
551
+ },
552
+ isError: true,
553
+ };
554
+ }
555
+ const entityId = typeof args.entity_id === "string" ? args.entity_id : undefined;
556
+ let link;
557
+ try {
558
+ link = await this.pica.billing.mintPayLink({
559
+ offer,
560
+ entity_id: entityId,
561
+ });
562
+ }
563
+ catch (err) {
564
+ const refusal = payRefusal(err, offer, entityId);
565
+ if (refusal)
566
+ return refusal;
567
+ throw err;
568
+ }
569
+ // The label is the ONE place the amount is worded — composed server-side
570
+ // in the org's own currency. Quote it; never re-format `amount_minor`.
571
+ const label = link.offers?.find((o) => o.offer === link.offer)?.label ??
572
+ link.offer;
573
+ return {
574
+ content: [
575
+ {
576
+ type: "text",
577
+ text: `${label}: ${link.pay_url} (expires ${link.expires_at}). ${link.how}`,
578
+ },
579
+ ],
580
+ structuredContent: {
581
+ kind: "pica.card.pay_link",
582
+ version: 1,
583
+ data: link,
584
+ },
585
+ };
586
+ }
192
587
  async status(_args) {
193
588
  const status = await this.pica.subscription.getStatus();
194
589
  if (!status) {
@@ -1 +1 @@
1
- {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/tools/subscription.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@withpica/mcp-server",
3
3
  "mcpName": "io.github.withpica/pica",
4
- "version": "2.95.4",
4
+ "version": "2.96.0",
5
5
  "description": "MCP Server for withPICA — enables AI assistants to interact with your withPICA music catalog",
6
6
  "homepage": "https://withpica.com/connect",
7
7
  "bugs": {
@@ -42,7 +42,7 @@
42
42
  "license": "MIT",
43
43
  "dependencies": {
44
44
  "@modelcontextprotocol/sdk": "~1.29.0",
45
- "@withpica/mcp-sdk": "^3.7.2",
45
+ "@withpica/mcp-sdk": "^3.13.0",
46
46
  "@withpica/mcp-utils": "^1.21.1"
47
47
  },
48
48
  "devDependencies": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/withpica/pica",
7
7
  "source": "github"
8
8
  },
9
- "version": "2.95.4",
9
+ "version": "2.96.0",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@withpica/mcp-server",
14
- "version": "2.95.4",
14
+ "version": "2.96.0",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  }