@withpica/mcp-server 2.101.0 → 2.103.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 (173) hide show
  1. package/CHANGELOG.md +101 -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/resources/index.d.ts +8 -1
  8. package/dist/resources/index.d.ts.map +1 -1
  9. package/dist/resources/index.js +87 -37
  10. package/dist/resources/index.js.map +1 -1
  11. package/dist/skills/skills.generated.d.ts.map +1 -1
  12. package/dist/skills/skills.generated.js +12 -1
  13. package/dist/skills/skills.generated.js.map +1 -1
  14. package/dist/tools/agent-hygiene.d.ts.map +1 -1
  15. package/dist/tools/agent-hygiene.js +2 -0
  16. package/dist/tools/agent-hygiene.js.map +1 -1
  17. package/dist/tools/agreement-types.d.ts.map +1 -1
  18. package/dist/tools/agreement-types.js +2 -0
  19. package/dist/tools/agreement-types.js.map +1 -1
  20. package/dist/tools/agreements.d.ts.map +1 -1
  21. package/dist/tools/agreements.js +9 -2
  22. package/dist/tools/agreements.js.map +1 -1
  23. package/dist/tools/assets.d.ts.map +1 -1
  24. package/dist/tools/assets.js +2 -0
  25. package/dist/tools/assets.js.map +1 -1
  26. package/dist/tools/audio-files.d.ts.map +1 -1
  27. package/dist/tools/audio-files.js +12 -8
  28. package/dist/tools/audio-files.js.map +1 -1
  29. package/dist/tools/audit.d.ts.map +1 -1
  30. package/dist/tools/audit.js +2 -0
  31. package/dist/tools/audit.js.map +1 -1
  32. package/dist/tools/auth.d.ts.map +1 -1
  33. package/dist/tools/auth.js +2 -0
  34. package/dist/tools/auth.js.map +1 -1
  35. package/dist/tools/bookings.d.ts.map +1 -1
  36. package/dist/tools/bookings.js +8 -4
  37. package/dist/tools/bookings.js.map +1 -1
  38. package/dist/tools/collaborations.d.ts.map +1 -1
  39. package/dist/tools/collaborations.js +2 -0
  40. package/dist/tools/collaborations.js.map +1 -1
  41. package/dist/tools/collaborators.d.ts.map +1 -1
  42. package/dist/tools/collaborators.js +33 -6
  43. package/dist/tools/collaborators.js.map +1 -1
  44. package/dist/tools/consent.d.ts.map +1 -1
  45. package/dist/tools/consent.js +5 -1
  46. package/dist/tools/consent.js.map +1 -1
  47. package/dist/tools/custody.d.ts.map +1 -1
  48. package/dist/tools/custody.js +25 -5
  49. package/dist/tools/custody.js.map +1 -1
  50. package/dist/tools/dashboard.d.ts.map +1 -1
  51. package/dist/tools/dashboard.js +5 -0
  52. package/dist/tools/dashboard.js.map +1 -1
  53. package/dist/tools/directory.d.ts.map +1 -1
  54. package/dist/tools/directory.js +7 -3
  55. package/dist/tools/directory.js.map +1 -1
  56. package/dist/tools/discovery.d.ts.map +1 -1
  57. package/dist/tools/discovery.js +6 -0
  58. package/dist/tools/discovery.js.map +1 -1
  59. package/dist/tools/documents.js +2 -2
  60. package/dist/tools/documents.js.map +1 -1
  61. package/dist/tools/duplicates.d.ts.map +1 -1
  62. package/dist/tools/duplicates.js +11 -4
  63. package/dist/tools/duplicates.js.map +1 -1
  64. package/dist/tools/enrichment.d.ts.map +1 -1
  65. package/dist/tools/enrichment.js +18 -31
  66. package/dist/tools/enrichment.js.map +1 -1
  67. package/dist/tools/import-documents.d.ts.map +1 -1
  68. package/dist/tools/import-documents.js +4 -0
  69. package/dist/tools/import-documents.js.map +1 -1
  70. package/dist/tools/index.d.ts +8 -0
  71. package/dist/tools/index.d.ts.map +1 -1
  72. package/dist/tools/index.js +24 -3
  73. package/dist/tools/index.js.map +1 -1
  74. package/dist/tools/labels.d.ts.map +1 -1
  75. package/dist/tools/labels.js +18 -2
  76. package/dist/tools/labels.js.map +1 -1
  77. package/dist/tools/licensing.d.ts.map +1 -1
  78. package/dist/tools/licensing.js +13 -6
  79. package/dist/tools/licensing.js.map +1 -1
  80. package/dist/tools/measured-audio.d.ts +32 -0
  81. package/dist/tools/measured-audio.d.ts.map +1 -0
  82. package/dist/tools/measured-audio.js +65 -0
  83. package/dist/tools/measured-audio.js.map +1 -0
  84. package/dist/tools/memory.d.ts.map +1 -1
  85. package/dist/tools/memory.js +2 -0
  86. package/dist/tools/memory.js.map +1 -1
  87. package/dist/tools/metadata.d.ts.map +1 -1
  88. package/dist/tools/metadata.js +35 -0
  89. package/dist/tools/metadata.js.map +1 -1
  90. package/dist/tools/multimedia.d.ts.map +1 -1
  91. package/dist/tools/multimedia.js +2 -0
  92. package/dist/tools/multimedia.js.map +1 -1
  93. package/dist/tools/my-recent-questions.d.ts.map +1 -1
  94. package/dist/tools/my-recent-questions.js +2 -0
  95. package/dist/tools/my-recent-questions.js.map +1 -1
  96. package/dist/tools/my-reported-issues.d.ts.map +1 -1
  97. package/dist/tools/my-reported-issues.js +2 -0
  98. package/dist/tools/my-reported-issues.js.map +1 -1
  99. package/dist/tools/notes.d.ts.map +1 -1
  100. package/dist/tools/notes.js +2 -0
  101. package/dist/tools/notes.js.map +1 -1
  102. package/dist/tools/notifications.d.ts.map +1 -1
  103. package/dist/tools/notifications.js +12 -3
  104. package/dist/tools/notifications.js.map +1 -1
  105. package/dist/tools/party-claims.d.ts.map +1 -1
  106. package/dist/tools/party-claims.js +14 -3
  107. package/dist/tools/party-claims.js.map +1 -1
  108. package/dist/tools/people.d.ts +1 -1
  109. package/dist/tools/people.d.ts.map +1 -1
  110. package/dist/tools/people.js +59 -48
  111. package/dist/tools/people.js.map +1 -1
  112. package/dist/tools/profile-claims.d.ts +6 -0
  113. package/dist/tools/profile-claims.d.ts.map +1 -1
  114. package/dist/tools/profile-claims.js +13 -3
  115. package/dist/tools/profile-claims.js.map +1 -1
  116. package/dist/tools/projects.d.ts.map +1 -1
  117. package/dist/tools/projects.js +2 -0
  118. package/dist/tools/projects.js.map +1 -1
  119. package/dist/tools/publishers.d.ts.map +1 -1
  120. package/dist/tools/publishers.js +20 -5
  121. package/dist/tools/publishers.js.map +1 -1
  122. package/dist/tools/recordings.d.ts.map +1 -1
  123. package/dist/tools/recordings.js +39 -47
  124. package/dist/tools/recordings.js.map +1 -1
  125. package/dist/tools/recovery-hints.d.ts.map +1 -1
  126. package/dist/tools/recovery-hints.js +27 -0
  127. package/dist/tools/recovery-hints.js.map +1 -1
  128. package/dist/tools/release-notes.d.ts.map +1 -1
  129. package/dist/tools/release-notes.js +2 -0
  130. package/dist/tools/release-notes.js.map +1 -1
  131. package/dist/tools/release-rich.d.ts.map +1 -1
  132. package/dist/tools/release-rich.js +4 -6
  133. package/dist/tools/release-rich.js.map +1 -1
  134. package/dist/tools/releases.d.ts.map +1 -1
  135. package/dist/tools/releases.js +16 -11
  136. package/dist/tools/releases.js.map +1 -1
  137. package/dist/tools/royalties.d.ts.map +1 -1
  138. package/dist/tools/royalties.js +10 -0
  139. package/dist/tools/royalties.js.map +1 -1
  140. package/dist/tools/search.d.ts.map +1 -1
  141. package/dist/tools/search.js +2 -0
  142. package/dist/tools/search.js.map +1 -1
  143. package/dist/tools/selections.d.ts.map +1 -1
  144. package/dist/tools/selections.js +4 -0
  145. package/dist/tools/selections.js.map +1 -1
  146. package/dist/tools/send.d.ts.map +1 -1
  147. package/dist/tools/send.js +2 -0
  148. package/dist/tools/send.js.map +1 -1
  149. package/dist/tools/sessions.d.ts.map +1 -1
  150. package/dist/tools/sessions.js +13 -7
  151. package/dist/tools/sessions.js.map +1 -1
  152. package/dist/tools/statements.d.ts.map +1 -1
  153. package/dist/tools/statements.js +2 -0
  154. package/dist/tools/statements.js.map +1 -1
  155. package/dist/tools/sync-fit.d.ts +27 -0
  156. package/dist/tools/sync-fit.d.ts.map +1 -0
  157. package/dist/tools/sync-fit.js +118 -0
  158. package/dist/tools/sync-fit.js.map +1 -0
  159. package/dist/tools/sync-placements.d.ts.map +1 -1
  160. package/dist/tools/sync-placements.js +2 -0
  161. package/dist/tools/sync-placements.js.map +1 -1
  162. package/dist/tools/users.d.ts.map +1 -1
  163. package/dist/tools/users.js +14 -3
  164. package/dist/tools/users.js.map +1 -1
  165. package/dist/tools/work-themes.d.ts +39 -0
  166. package/dist/tools/work-themes.d.ts.map +1 -0
  167. package/dist/tools/work-themes.js +330 -0
  168. package/dist/tools/work-themes.js.map +1 -0
  169. package/dist/tools/works.d.ts.map +1 -1
  170. package/dist/tools/works.js +4 -2
  171. package/dist/tools/works.js.map +1 -1
  172. package/package.json +4 -4
  173. package/server.json +2 -2
package/CHANGELOG.md CHANGED
@@ -11,6 +11,107 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11
11
 
12
12
  ## [Unreleased]
13
13
 
14
+ ## [2.103.0] - 2026-10-09
15
+
16
+ ### Security
17
+
18
+ - `@modelcontextprotocol/sdk` moves to 1.31.0 (GHSA-6qxp-vccf-f47h, high: the SDK's
19
+ OAuth client could send credentials to an authorization server the MCP server chose).
20
+
21
+ ### Fixed
22
+
23
+ - Tool titles: a title a tool declares is now advertised (it was discarded), so `pica_discover`, `pica_tool_details` and `pica_execute` show words instead of their names in connector tool lists. `pica_sign_in` and `pica_sign_out` gain titles. Eight catalog tools declared a title that differed from their display name; the declarations are removed so their advertised titles are unchanged. A test fails any tool without a title, or with a declared title that disagrees with its display name.
24
+
25
+ ### Changed
26
+
27
+ - **Measured audio facts are labelled.** `pica_audio_inspect` (analysis
28
+ section) and `pica_recordings_inspect` (audio section) carry a `measured`
29
+ block — `tempo_bpm`, `key`, `mode`, `energy`, `energy_method`,
30
+ `loudness_lufs`, `duration_seconds`, `analysis_version` — with a
31
+ `measured_basis` line. Energy is now measured from integrated loudness;
32
+ files analysed before that say `energy_method: "legacy_rms_capped"`.
33
+ - `pica_audio_analyze` no longer promises valence or mood: the analyser
34
+ measures neither, and both come back null.
35
+ - `pica_audio_inspect` no longer returns `detected_valence`, which read a
36
+ field the API never sent and was always absent.
37
+
38
+ ### Added
39
+
40
+ - **`pica_sync_fit_query`: which songs fit film and TV productions in
41
+ progress.** The same list as the sync page's "fit" section, per song
42
+ (`work_id`), per production (`screen_project_id`), or the whole catalogue
43
+ spread so each song's best three pairs come before any song's fourth.
44
+ Pages with `limit` (≤ 100) and `offset` and says how many pairs there are
45
+ in all. Each production carries its genres, themes, countries, language,
46
+ release date, stage, companies and networks; with `song_facts: true` each
47
+ row also carries the song's genres, lyric language and a `measured` entry
48
+ per analysed master (tempo_bpm, key, mode, duration_seconds: the same names
49
+ as the other tools' measured blocks), so the user's AI can judge the fit
50
+ itself. Read-only:
51
+ the description tells the AI its judgement belongs in its answer and is
52
+ never written back to PICA.
53
+ - **Directory topics from the owner** (`pica_topics_untagged`, `pica_topics_inspect`,
54
+ `pica_topics_propose`, `pica_topics_review`) and the `tag-my-songs` skill. The owner's
55
+ assistant reads the owner's lyrics and audio facts and proposes up to five topics from a
56
+ fixed list (and moods per recording); the owner approves before anything is public. PICA
57
+ runs no AI on lyrics.
58
+
59
+ ### Fixed — honest totals (row-cap T3)
60
+
61
+ - List tools report the REAL total and an honest `has_more` instead of the
62
+ page length: people, agreements, recordings (whose unfiltered list also
63
+ re-served page one), bookings, licence enquiries, party claims, releases,
64
+ sessions, collaborator invites, custody. Publishers and labels report
65
+ `total: null` (platform-wide rows are not counted) with an honest
66
+ `has_more`, and take `offset`.
67
+ - `pica_people_query`: a single `role` is filtered server-side when it can
68
+ be (real total); with `query` or `roles` it filters the page and `total`
69
+ is `null`.
70
+ - `pica_notifications_list` counted every notification as unread (it read
71
+ a `read_at` field the service never sends) and called a per-source-capped
72
+ list length a total.
73
+ - `pica_works_inspect`'s agreements section showed the org's first page of
74
+ agreements, not the work's.
75
+ - `pica_release_show` looked the label up by searching one page; it now
76
+ asks for the id.
77
+ - `pica_enrichment_proposals_bulk_reject`'s dry run previewed a different
78
+ set (the list route) from the one the real run rejects; both now use one
79
+ resolver, and the preview says when the real call would exceed its cap.
80
+ - Every tool `limit` declares its `maximum` (52 schemas), guarded by a test.
81
+
82
+ ## [2.102.0] - 2026-10-07
83
+
84
+ ### Added
85
+
86
+ - **`pica_profile_claims_status` reports `linked`.** A person already linked
87
+ to a PICA account now reads `linked` (nothing to invite) instead of
88
+ `not_invited`, and `state: "linked"` filters to them.
89
+ `pica_profile_claims_invite` skips people already linked to an account and
90
+ the caller themself, and its preview says so.
91
+
92
+ ### Changed
93
+
94
+ - **`works://list`, `people://list` and `recordings://list` say how big the
95
+ catalogue really is.** Each returns the first page (100 works, 500 people,
96
+ 100 recordings) with the true `total` from SQL counts, plus `returned`,
97
+ `has_more` and, when there is more, a note pointing at the matching
98
+ `_query` tool. `total` used to be the length of the page, so a catalogue of
99
+ 2,239 works was reported as 100. The resource names drop "All".
100
+ - **`catalog://stats` counts the whole catalogue.** Every figure now comes
101
+ from the same counts as `pica_catalog_stats`, not from list pages that were
102
+ capped at 100 or 500 rows. `works.by_type` lists the work types the
103
+ catalogue actually holds; its old fixed keys (composition, arrangement,
104
+ adaptation, translation) read 0 for every catalogue.
105
+ - **`pro_member_number` on `pica_people_create` / `pica_people_update` says
106
+ what it is:** the person's account number at their own society, not their
107
+ IPI.
108
+
109
+ ### Fixed
110
+
111
+ - **The import template and catalogue counts work on a protected preview.**
112
+ Requires `@withpica/mcp-sdk` 3.23.1, which routes both calls through the
113
+ shared request path and refuses an HTML page returned in place of a file.
114
+
14
115
  ## [2.101.0] - 2026-10-06
15
116
 
16
117
  ### Added
package/README.md CHANGED
@@ -65,11 +65,11 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
65
65
 
66
66
  ## Tools
67
67
 
68
- 349 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
+ 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.
69
69
 
70
70
  **works** — manage your musical works
71
71
 
72
- `pica_works_query`, `pica_works_inspect`, `pica_works_create`, `pica_register_set`, `pica_works_update`, `pica_works_delete`, `pica_works_bulk_delete`, `pica_works_bulk_update`, `pica_works_bulk_link_artist`, `pica_works_bulk_add_collaborator`, `pica_work_writers_add`, `pica_works_bulk_copy_credits`, `pica_works_bulk_move_to_performances`, `pica_works_verify`, `pica_works_verify_registrations`, `pica_works_attest`, `pica_catalog_diligence`
72
+ `pica_works_query`, `pica_works_inspect`, `pica_works_create`, `pica_register_set`, `pica_works_update`, `pica_works_delete`, `pica_works_bulk_delete`, `pica_works_bulk_update`, `pica_works_bulk_link_artist`, `pica_works_bulk_add_collaborator`, `pica_work_writers_add`, `pica_topics_untagged`, `pica_topics_inspect`, `pica_topics_propose`, `pica_topics_review`, `pica_works_bulk_copy_credits`, `pica_works_bulk_move_to_performances`, `pica_works_verify`, `pica_works_verify_registrations`, `pica_works_attest`, `pica_catalog_diligence`
73
73
 
74
74
  **people** — manage people in your catalog
75
75
 
@@ -265,7 +265,7 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
265
265
 
266
266
  **sync placements** — manage sync placements (films/TV/ads/games licensing your works) — placement records, evidence, verification state
267
267
 
268
- `pica_sync_placements_query`, `pica_sync_placements_inspect`, `pica_sync_placements_create`, `pica_sync_placements_update`, `pica_sync_placements_delete`, `pica_sync_placements_cite`
268
+ `pica_sync_placements_query`, `pica_sync_placements_inspect`, `pica_sync_placements_create`, `pica_sync_placements_update`, `pica_sync_placements_delete`, `pica_sync_placements_cite`, `pica_sync_fit_query`
269
269
 
270
270
  **notifications** — list and schedule notifications to users and people
271
271
 
@@ -293,4 +293,4 @@ Read tools are annotated read-only and are safe to call freely. Write tools repo
293
293
 
294
294
  ---
295
295
 
296
- Generated for `@withpica/mcp-server@2.101.0`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.
296
+ Generated for `@withpica/mcp-server@2.103.0`. © 2024-2026 Withpica Ltd. All rights reserved. MIT licensed.