@withpica/mcp-server 2.103.0 → 2.105.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 (112) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/README.md +9 -5
  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/resources/index.d.ts.map +1 -1
  8. package/dist/resources/index.js +23 -1
  9. package/dist/resources/index.js.map +1 -1
  10. package/dist/resources/required-schemas.generated.d.ts +77 -0
  11. package/dist/resources/required-schemas.generated.d.ts.map +1 -1
  12. package/dist/resources/required-schemas.generated.js +114 -0
  13. package/dist/resources/required-schemas.generated.js.map +1 -1
  14. package/dist/resources/required-schemas.source.d.ts.map +1 -1
  15. package/dist/resources/required-schemas.source.js +85 -0
  16. package/dist/resources/required-schemas.source.js.map +1 -1
  17. package/dist/server-instructions.d.ts +2 -2
  18. package/dist/server-instructions.d.ts.map +1 -1
  19. package/dist/server-instructions.js +2 -0
  20. package/dist/server-instructions.js.map +1 -1
  21. package/dist/skills/skills.generated.d.ts.map +1 -1
  22. package/dist/skills/skills.generated.js +25 -3
  23. package/dist/skills/skills.generated.js.map +1 -1
  24. package/dist/tools/app-tools.js +1 -1
  25. package/dist/tools/app-tools.js.map +1 -1
  26. package/dist/tools/assets.d.ts +1 -0
  27. package/dist/tools/assets.d.ts.map +1 -1
  28. package/dist/tools/assets.js +45 -40
  29. package/dist/tools/assets.js.map +1 -1
  30. package/dist/tools/audio-files.js +6 -6
  31. package/dist/tools/audio-files.js.map +1 -1
  32. package/dist/tools/catalogue-argument.d.ts +76 -0
  33. package/dist/tools/catalogue-argument.d.ts.map +1 -0
  34. package/dist/tools/catalogue-argument.js +114 -0
  35. package/dist/tools/catalogue-argument.js.map +1 -0
  36. package/dist/tools/custody.d.ts +2 -2
  37. package/dist/tools/custody.d.ts.map +1 -1
  38. package/dist/tools/custody.js +22 -20
  39. package/dist/tools/custody.js.map +1 -1
  40. package/dist/tools/dashboard.d.ts.map +1 -1
  41. package/dist/tools/dashboard.js +7 -4
  42. package/dist/tools/dashboard.js.map +1 -1
  43. package/dist/tools/discovery.d.ts.map +1 -1
  44. package/dist/tools/discovery.js +30 -2
  45. package/dist/tools/discovery.js.map +1 -1
  46. package/dist/tools/duplicates.d.ts +15 -2
  47. package/dist/tools/duplicates.d.ts.map +1 -1
  48. package/dist/tools/duplicates.js +109 -10
  49. package/dist/tools/duplicates.js.map +1 -1
  50. package/dist/tools/enrichment.d.ts.map +1 -1
  51. package/dist/tools/enrichment.js +10 -1
  52. package/dist/tools/enrichment.js.map +1 -1
  53. package/dist/tools/explainability.js +1 -1
  54. package/dist/tools/explainability.js.map +1 -1
  55. package/dist/tools/exports.d.ts.map +1 -1
  56. package/dist/tools/exports.js +15 -8
  57. package/dist/tools/exports.js.map +1 -1
  58. package/dist/tools/handovers.d.ts +42 -0
  59. package/dist/tools/handovers.d.ts.map +1 -0
  60. package/dist/tools/handovers.js +302 -0
  61. package/dist/tools/handovers.js.map +1 -0
  62. package/dist/tools/import.d.ts.map +1 -1
  63. package/dist/tools/import.js +6 -2
  64. package/dist/tools/import.js.map +1 -1
  65. package/dist/tools/index.d.ts +18 -1
  66. package/dist/tools/index.d.ts.map +1 -1
  67. package/dist/tools/index.js +82 -1
  68. package/dist/tools/index.js.map +1 -1
  69. package/dist/tools/metadata.d.ts.map +1 -1
  70. package/dist/tools/metadata.js +87 -1
  71. package/dist/tools/metadata.js.map +1 -1
  72. package/dist/tools/notifications.js +3 -3
  73. package/dist/tools/notifications.js.map +1 -1
  74. package/dist/tools/recordings.d.ts.map +1 -1
  75. package/dist/tools/recordings.js +10 -2
  76. package/dist/tools/recordings.js.map +1 -1
  77. package/dist/tools/recovery-hints.d.ts.map +1 -1
  78. package/dist/tools/recovery-hints.js +141 -0
  79. package/dist/tools/recovery-hints.js.map +1 -1
  80. package/dist/tools/relationship-change.d.ts +16 -0
  81. package/dist/tools/relationship-change.d.ts.map +1 -0
  82. package/dist/tools/relationship-change.js +60 -0
  83. package/dist/tools/relationship-change.js.map +1 -0
  84. package/dist/tools/relationship-copy.d.ts +99 -0
  85. package/dist/tools/relationship-copy.d.ts.map +1 -0
  86. package/dist/tools/relationship-copy.js +213 -0
  87. package/dist/tools/relationship-copy.js.map +1 -0
  88. package/dist/tools/relationship-scope.d.ts +104 -0
  89. package/dist/tools/relationship-scope.d.ts.map +1 -0
  90. package/dist/tools/relationship-scope.js +106 -0
  91. package/dist/tools/relationship-scope.js.map +1 -0
  92. package/dist/tools/relationships.d.ts +64 -0
  93. package/dist/tools/relationships.d.ts.map +1 -0
  94. package/dist/tools/relationships.js +1062 -0
  95. package/dist/tools/relationships.js.map +1 -0
  96. package/dist/tools/send.js +1 -1
  97. package/dist/tools/send.js.map +1 -1
  98. package/dist/tools/settings.d.ts.map +1 -1
  99. package/dist/tools/settings.js +4 -1
  100. package/dist/tools/settings.js.map +1 -1
  101. package/dist/tools/share-links.js +3 -3
  102. package/dist/tools/share-links.js.map +1 -1
  103. package/dist/tools/split-sheets.d.ts.map +1 -1
  104. package/dist/tools/split-sheets.js +4 -0
  105. package/dist/tools/split-sheets.js.map +1 -1
  106. package/dist/tools/works.d.ts +11 -0
  107. package/dist/tools/works.d.ts.map +1 -1
  108. package/dist/tools/works.js +63 -3
  109. package/dist/tools/works.js.map +1 -1
  110. package/package.json +3 -3
  111. package/scripts/build-required-schemas.ts +6 -4
  112. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -11,6 +11,97 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [2.105.0] - 2026-10-15
15
+
16
+ ### Added
17
+
18
+ - `pica_physical_assets_market_check` — an AI market price estimate for a physical
19
+ asset, from the organisation's own AI provider. A write (`write:catalog`), so a
20
+ client confirms before it runs.
21
+ - A tool definition can declare `alsoRequires`: scopes a credential must hold as
22
+ well as `scope`. `pica_tool_details` reports them as `also_requires`.
23
+
24
+ ### Fixed
25
+
26
+ - `pica_export_snapshot`, `pica_export_song_dossiers` and
27
+ `pica_export_catalog_asset_report` declare both scopes their routes need
28
+ (`write:catalog` and `write:files`). Each declared one, so a credential
29
+ holding only what the tool advertised was refused 403 underneath.
30
+ - `pica_run_person_cascade` and `pica_split_sheet_send` also require
31
+ `write:people`, which their routes already needed.
32
+ - `pica_share_links_create`, `_update`, `_delete` and `pica_upload` require
33
+ `write:files` (a share or an upload is a file operation), as their routes now do.
34
+ - `pica_audio_assign`, `_bulk_assign_suggested`, `_dismiss_match`, `_update` and
35
+ `_bulk_update` require `write:catalog`: they attach or edit audio against the
36
+ catalogue, and their routes are floored there. Upload, analyse and identify
37
+ stay `write:files`, and their routes' floor is now `write:files` too.
38
+ - `pica_notification_acknowledge` requires `write:catalog`: it acknowledges
39
+ catalogue discoveries, which is what its route requires.
40
+ - `pica_physical_assets_query`, `pica_physical_assets_inspect`,
41
+ `pica_audio_pipeline_status`, `pica_count_explain`, `pica_notifications_list`
42
+ and `pica_send_query` require `read:catalog`, which their routes require.
43
+ - `pica_notifications_recent` requires `read:catalog`; its route, and
44
+ `pica_discoveries_query`'s, no longer require `write:catalog` for a read.
45
+ - `pica_physical_assets_inspect` no longer has a `market` section: a read never
46
+ calls an AI provider. Use `pica_physical_assets_market_check`.
47
+ - `pica_import_analyze` is a write tool (`write:catalog`): it spends PICA's
48
+ paid AI model on the file, so a client asks before running it.
49
+
50
+ - The seven physical-asset write tools (`pica_physical_assets_create`,
51
+ `_update`, `_delete`, `_link_work`, `_link_recording`, `_unlink_work`,
52
+ `_unlink_recording`) declare `write:catalog`, the scope their routes and the
53
+ REST write floor require. They declared `write:files`, so a credential holding
54
+ exactly that passed MCP dispatch and was refused 403 underneath.
55
+
56
+ ## [2.104.0] - 2026-10-14
57
+
58
+ ### Added
59
+
60
+ - Three tools for preparing a catalogue for a client who will own it:
61
+ `pica_handover_create` (an organisation creates the catalogue; nothing is sent),
62
+ `pica_handover_send` (emails the client, who has 60 days to accept; from a connected app the
63
+ person approves it first) and `pica_handover_answer` (gives the client the link to accept on
64
+ screen; it never accepts or declines, because taking ownership is the person's own act).
65
+ - Tools that read or change a catalogue's records take an optional `catalogue` argument: the id of
66
+ a client catalogue your organisation looks after. The call then acts for that client, within what
67
+ the relationship allows, and the app refuses anything outside it with the reason. A tool that
68
+ can't act for a client (account, keys, billing, feedback, and the relationship tools themselves)
69
+ refuses the argument rather than ignoring it, and a confirmation token issued for one client
70
+ can't be used for another.
71
+ - Nine tools for who looks after whose catalogue:
72
+ - for a catalogue's owner: `pica_relationships_list` (who looks after it, what each may do, and
73
+ invitations waiting), `pica_relationships_answer` (accept, decline or change a request, or
74
+ accept an invitation), `pica_relationships_grant` (invite an organisation by email),
75
+ `pica_relationships_revoke` and `pica_relationships_activity` (what was done through a
76
+ relationship);
77
+ - for an organisation: `pica_portfolio_list` (the client catalogues it looks after, with each
78
+ one's id for `catalogue`), `pica_portfolio_briefing` (what needs doing across them),
79
+ `pica_portfolio_invite` (ask a client by email) and `pica_relationships_step_down`.
80
+ Accepting, changing, revoking and an owner's invitation are the person's own decision: from a
81
+ connected app they ask the person to approve first, and from PICA's own assistant they give the
82
+ link to do it on screen. Every step sends the version of the terms that was read; if the terms
83
+ changed since, nothing happens and the current terms come back. A check PICA couldn't make says
84
+ so, never 0. New resource: `pica://schemas/relationship-required`.
85
+ - Two skills: `look-after-clients` (an organisation sees every client, finds what needs doing and
86
+ fixes it in the right client's catalogue, within what each allowed) and
87
+ `who-can-see-my-catalogue` (an owner sees who looks after their catalogue, what each can do and
88
+ has done, and answers, changes or ends it). `first-session` routes to them, and the server
89
+ instructions say how to act for a client catalogue.
90
+ - `pica_duplicates_mark_different` — when the user says recordings or releases that
91
+ `pica_find_duplicates` grouped are not the same, `action: "mark"` records it for every pair
92
+ among 2–25 ids and they are not offered as duplicates again; `action: "unmark"` takes it back.
93
+ Nothing is merged, deleted or edited. Works are still dismissed in the catalog duplicates view.
94
+
95
+ ### Changed
96
+
97
+ - `pica_export_snapshot` says it is for an owner or admin of the catalogue only;
98
+ its route now refuses anyone else.
99
+
100
+ - `pica_find_duplicates`: recording and release groups no longer include a pair the owner marked
101
+ different, and their "keep them separate" option now says how to stop them coming back
102
+ (it used to say they would keep appearing). A group never holds a marked pair, even through a
103
+ third copy matching both.
104
+
14
105
  ## [2.103.0] - 2026-10-09
15
106
 
16
107
  ### Security
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
- 354 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
+ 368 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
 
@@ -119,9 +119,9 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
119
119
 
120
120
  `pica_notes_query`, `pica_notes_inspect`, `pica_notes_create`, `pica_notes_delete`
121
121
 
122
- **duplicates** — detect duplicate records and merge them (audio_files can be found but not merged — a duplicate file is deleted)
122
+ **duplicates** — detect duplicate records and merge them, or mark recordings and releases as different so they stop being offered (audio_files can be found but not merged — a duplicate file is deleted)
123
123
 
124
- `pica_find_duplicates`, `pica_merge_duplicates`
124
+ `pica_find_duplicates`, `pica_merge_duplicates`, `pica_duplicates_mark_different`
125
125
 
126
126
  **import** — import catalog data from files and streaming services, and see what happened to emails forwarded to PICA
127
127
 
@@ -225,7 +225,11 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
225
225
 
226
226
  **physical assets** — manage physical assets (master tapes, hardware, artefacts)
227
227
 
228
- `pica_physical_assets_query`, `pica_physical_assets_inspect`, `pica_physical_assets_create`, `pica_physical_assets_update`, `pica_physical_assets_delete`, `pica_physical_assets_export`, `pica_physical_assets_stats`, `pica_physical_assets_link_work`, `pica_physical_assets_link_recording`, `pica_physical_assets_unlink_work`, `pica_physical_assets_unlink_recording`
228
+ `pica_physical_assets_query`, `pica_physical_assets_inspect`, `pica_physical_assets_create`, `pica_physical_assets_update`, `pica_physical_assets_market_check`, `pica_physical_assets_delete`, `pica_physical_assets_export`, `pica_physical_assets_stats`, `pica_physical_assets_link_work`, `pica_physical_assets_link_recording`, `pica_physical_assets_unlink_work`, `pica_physical_assets_unlink_recording`
229
+
230
+ **portfolio** — who looks after a catalogue — see and answer requests, invite an organisation or a client by email, end access, see what was done through a relationship, (for organisations) the client catalogues you look after with what needs doing, and preparing a catalogue for a client to take over
231
+
232
+ `pica_relationships_list`, `pica_relationships_answer`, `pica_relationships_grant`, `pica_relationships_revoke`, `pica_relationships_activity`, `pica_relationships_step_down`, `pica_portfolio_list`, `pica_portfolio_briefing`, `pica_portfolio_invite`, `pica_handover_create`, `pica_handover_send`, `pica_handover_answer`
229
233
 
230
234
  **recording splits** — manage recording (master) splits between contributors
231
235
 
@@ -293,4 +297,4 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
293
297
 
294
298
  ---
295
299
 
296
- Generated for `@withpica/mcp-server@2.103.0`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.
300
+ Generated for `@withpica/mcp-server@2.105.0`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.