@withpica/mcp-server 2.96.1 → 2.97.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 (72) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +4 -4
  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/arg-aliases.d.ts +59 -0
  11. package/dist/tools/arg-aliases.d.ts.map +1 -0
  12. package/dist/tools/arg-aliases.js +91 -0
  13. package/dist/tools/arg-aliases.js.map +1 -0
  14. package/dist/tools/assets.d.ts.map +1 -1
  15. package/dist/tools/assets.js +18 -0
  16. package/dist/tools/assets.js.map +1 -1
  17. package/dist/tools/audio-files.d.ts.map +1 -1
  18. package/dist/tools/audio-files.js +38 -7
  19. package/dist/tools/audio-files.js.map +1 -1
  20. package/dist/tools/dashboard.d.ts.map +1 -1
  21. package/dist/tools/dashboard.js +1 -0
  22. package/dist/tools/dashboard.js.map +1 -1
  23. package/dist/tools/deprecations.d.ts +21 -7
  24. package/dist/tools/deprecations.d.ts.map +1 -1
  25. package/dist/tools/deprecations.js +31 -17
  26. package/dist/tools/deprecations.js.map +1 -1
  27. package/dist/tools/discovery.d.ts +5 -0
  28. package/dist/tools/discovery.d.ts.map +1 -1
  29. package/dist/tools/discovery.js +208 -78
  30. package/dist/tools/discovery.js.map +1 -1
  31. package/dist/tools/index.d.ts.map +1 -1
  32. package/dist/tools/index.js +15 -4
  33. package/dist/tools/index.js.map +1 -1
  34. package/dist/tools/metadata.d.ts.map +1 -1
  35. package/dist/tools/metadata.js +37 -10
  36. package/dist/tools/metadata.js.map +1 -1
  37. package/dist/tools/multimedia.d.ts.map +1 -1
  38. package/dist/tools/multimedia.js +33 -5
  39. package/dist/tools/multimedia.js.map +1 -1
  40. package/dist/tools/notes.d.ts.map +1 -1
  41. package/dist/tools/notes.js +24 -2
  42. package/dist/tools/notes.js.map +1 -1
  43. package/dist/tools/people.d.ts.map +1 -1
  44. package/dist/tools/people.js +1 -0
  45. package/dist/tools/people.js.map +1 -1
  46. package/dist/tools/public-filter.d.ts.map +1 -1
  47. package/dist/tools/public-filter.js +1 -1
  48. package/dist/tools/public-filter.js.map +1 -1
  49. package/dist/tools/recordings.d.ts +13 -0
  50. package/dist/tools/recordings.d.ts.map +1 -1
  51. package/dist/tools/recordings.js +96 -33
  52. package/dist/tools/recordings.js.map +1 -1
  53. package/dist/tools/recovery-hints.d.ts.map +1 -1
  54. package/dist/tools/recovery-hints.js +55 -4
  55. package/dist/tools/recovery-hints.js.map +1 -1
  56. package/dist/tools/sessions.d.ts.map +1 -1
  57. package/dist/tools/sessions.js +25 -3
  58. package/dist/tools/sessions.js.map +1 -1
  59. package/dist/tools/settings.d.ts.map +1 -1
  60. package/dist/tools/settings.js +3 -2
  61. package/dist/tools/settings.js.map +1 -1
  62. package/dist/tools/subscription.d.ts +99 -13
  63. package/dist/tools/subscription.d.ts.map +1 -1
  64. package/dist/tools/subscription.js +403 -8
  65. package/dist/tools/subscription.js.map +1 -1
  66. package/dist/tools/wrapped-args-envelope.d.ts +58 -0
  67. package/dist/tools/wrapped-args-envelope.d.ts.map +1 -0
  68. package/dist/tools/wrapped-args-envelope.js +66 -0
  69. package/dist/tools/wrapped-args-envelope.js.map +1 -0
  70. package/package.json +3 -3
  71. package/server.json +2 -2
  72. package/.claude/settings.local.json +0 -5
package/CHANGELOG.md CHANGED
@@ -11,6 +11,110 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ PR #2118 (`fix/avatar-import-path-2026-09-03`) is merged into the release branch, so its changes ship in the version below; publish in the order mcp-utils → mcp-sdk → mcp-server.
15
+
16
+ ## [2.97.0] - 2026-09-04
17
+
18
+ ⚠️ Publish order: `@withpica/mcp-sdk` 3.14.0 and `@withpica/mcp-utils` 1.29.0
19
+ must be on npm before this release — the dependency floors are now
20
+ `^3.14.0` / `^1.29.0` (this release imports `pageEnvelope`, which only
21
+ exists from mcp-utils 1.29.0; a clean install against 1.28.0 breaks at
22
+ runtime — the 2.96.2 uninstallable incident).
23
+
24
+ ### Added
25
+
26
+ - `pica_multimedia_import_url` accepts `person_id` (sets the person's profile image) and its summary names the outcome — `Imported from URL (via)`, profile-image set/NOT set, work link (PR #2118, merged into this release). Page URLs are followed to their `og:image`.
27
+
28
+ - **Per-tool argument aliasing for `pica_execute`** (`arg-aliases.ts`, D1
29
+ 2026-09-03) — `applyArgAliases` renames a tool's OWN entity id (or an
30
+ explicit `TOOL_ARG_ALIASES` entry, e.g. `pica_skill_get`'s `skill` /
31
+ `skill_name`) to the schema's real required field name, structurally by
32
+ domain (`DOMAIN_ID_ALIASES`) — never a foreign entity's id, never
33
+ overwriting a value already present, and left untouched when more than
34
+ one candidate is present. Fixes the wrong diagnosis `pica_execute` gave in
35
+ all 36 logged cases since July, where an agent sent e.g. `audio_file_id`
36
+ to `pica_audio_update` and was told the client had dropped the field in
37
+ transit.
38
+ - **Shared `WRAPPED_ARGS_MISSING` envelope builder**
39
+ (`wrapped-args-envelope.ts`) — both guards that can reject a
40
+ `pica_execute` call before dispatch (the plain `required`-list guard, and
41
+ the `requiredOneOf` one-of-N guard covering `*_inspect` / `pica_search` /
42
+ bookings / licensing / shows / royalties tools) now build their message
43
+ and `structuredContent` through one function, naming
44
+ `unrecognised_fields` and `aliases_applied` in **both** the text block and
45
+ `structuredContent` instead of asserting "client-side transport loss" for
46
+ a non-empty args object. Empty args still name transport loss — there's
47
+ nothing else an empty resolved-args object could be.
48
+ - **`offset` on `pica_audio_query`, `pica_notes_query`, `pica_sessions_query`**
49
+ (Task 10), each returning a `page` envelope built with
50
+ `@withpica/mcp-utils`'s `pageEnvelope()`. Audio and sessions fall back to
51
+ "page was full" (no total available); notes uses the route's real
52
+ `COUNT` for an exact `has_more`. A new `query-offset-parity` registry
53
+ guard test pins which remaining `_query` tools still lack `offset` so
54
+ each can be fixed and measured in isolation.
55
+
56
+ ### Changed
57
+
58
+ - **Duplicate-release recovery hints point at a fix, not a dead end.**
59
+ `RELEASE_ALREADY_EXISTS` on `pica_releases_create` /
60
+ `pica_releases_create_with_tracks` now names `pica_releases_update` /
61
+ `pica_releases_attach_track` (the message already carries the existing
62
+ release's id) instead of `pica_releases_query`; `pica_releases_attach_track`'s
63
+ own `RELEASE_ALREADY_EXISTS` (a different release already holds the UPC)
64
+ points at `pica_releases_inspect`.
65
+ - **Deprecated alias removal deferred to 2.98.0** — see `metadata.ts`.
66
+
67
+ ## [2.96.2] - 2026-09-02
68
+
69
+ The MPP pay rail (spec 2026-08-24 WS-B): a new tool that mints a pay link,
70
+ and `pica_subscription_status` learns to say what pica costs and what it is
71
+ holding. Depends on `@withpica/mcp-sdk` 3.13.0 (`BillingResource`) — publish
72
+ order matters, see `docs/releases/2026-08-26-mcp-release.md`. (This entry
73
+ was authored as 2.96.0, which npm deprecated after 2.96.1 shipped from
74
+ develop without `pica_billing_pay`; the branch re-releases on top of 2.96.1
75
+ as 2.96.2, and also carries the stdio relay change below.)
76
+
77
+ ### Added
78
+
79
+ - **`pica_billing_pay`** — new tool, `scope: read:catalog`, `tier: read`
80
+ (minting a link mints a capability, not a charge — nothing is billed until
81
+ the link is paid). Wraps `POST /api/admin/billing/pay-link` via
82
+ `PicaClient.billing.mintPayLink()`. Takes `offer` (`resident_month` | `unlock`
83
+ | `settle`, required) and `entity_id` (required for `unlock`). Route
84
+ refusals — billing disabled, nothing held on that work, offer no longer
85
+ applies — come back as structured `isError` results with a `next_tool`
86
+ pointer, not thrown errors. Added to the `subscription` tool category
87
+ (renamed description: "what does pica cost, how do I pay, and what is pica
88
+ holding — read your billing state and get a pay link"), the atlas
89
+ (`"how do i pay pica?"` and its synonyms), and `RECOVERY_HINTS`.
90
+ - **`pica_subscription_status` carries `pricing` and `held` when the route
91
+ measured them.** `SubscriptionStatusFlat` gains optional `pricing` and
92
+ `held` fields (omitted, not `null`, when absent — a `null` price would read
93
+ as "free"). The composed `summary` sentence appends one further clause
94
+ naming the free-runway/resident-included song counts and, when
95
+ `held.count > 0`, how many findings across how many works are held pending
96
+ payment.
97
+ - **`pica_dashboard_briefing`'s `found` block description gains a `billing`
98
+ clause**: when `billing.tab` is a string, state the tab total once and say
99
+ that settling it clears what pica is holding; when `billing.pay` names a
100
+ tool, offer to call it — mint a pay link, never charge unprompted.
101
+
102
+ ### Changed
103
+
104
+ - **stdio relay forwards a narrowed result projection** — after a successful
105
+ tool call the audit entry now carries `result_projection` (built by
106
+ `narrowToolResultForRefs` from `@withpica/mcp-utils` ≥1.28.0), so the
107
+ relay ingest can attribute import wins: `pica_import_streaming_link` /
108
+ `pica_import_youtube_link` created-work ids live in the RESULT and their
109
+ params carry no id, which is why stdio imports recorded `entity_refs:
110
+ null` and were invisible to the weekly roundup's wins beat. Only
111
+ allow-listed uuid arrays travel; every other tool sends
112
+ `result_projection: null` — nothing else on the wire changes. (The same
113
+ entry field also rides `makeHttpAuditFn`'s POST to `/api/mcp/audit`,
114
+ which destructures a fixed field list and ignores it.)
115
+ ⚠️ Publish order: `@withpica/mcp-utils` 1.28.0 must be on npm before this
116
+ release (2.96.2) — the dependency floor is `^1.28.0`.
117
+
14
118
  ## [2.96.1] - 2026-08-31
15
119
 
16
120
  First npm release since 2.95.4 — carries everything below (the discover
package/README.md CHANGED
@@ -65,7 +65,7 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
65
65
 
66
66
  ## Tools
67
67
 
68
- 329 tools, grouped below by the taxonomy `pica_discover` uses. The server's own `tools/list` is authoritative — not every registered tool is filed under a category yet, so the names below are a map, not a census.
68
+ 330 tools, grouped below by the taxonomy `pica_discover` uses. The server's own `tools/list` is authoritative — not every registered tool is filed under a category yet, so the names below are a map, not a census.
69
69
 
70
70
  **works** — manage your musical works
71
71
 
@@ -191,9 +191,9 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
191
191
 
192
192
  `pica_storage_status`, `pica_storage_configure_start`, `pica_storage_disconnect`, `pica_delete_my_account`
193
193
 
194
- **subscription** — view your billing state, manage your subscription, and pick a tier
194
+ **subscription** — what does pica cost, how do I pay, and what is pica holding — read your billing state and get a pay link
195
195
 
196
- `pica_subscription_status`, `pica_subscription_manage`
196
+ `pica_subscription_status`, `pica_billing_pay`, `pica_subscription_manage`
197
197
 
198
198
  **profile** — manage your user, organisation, and directory profile
199
199
 
@@ -285,4 +285,4 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
285
285
 
286
286
  ---
287
287
 
288
- Generated for `@withpica/mcp-server@2.95.4`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.
288
+ Generated for `@withpica/mcp-server@2.97.0`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.