@withpica/mcp-server 2.7.0 → 2.9.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 (261) hide show
  1. package/dist/__mocks__/mppx-mcp-sdk-server.d.ts +6 -0
  2. package/dist/__mocks__/mppx-mcp-sdk-server.d.ts.map +1 -0
  3. package/dist/__mocks__/mppx-mcp-sdk-server.js +6 -0
  4. package/dist/__mocks__/mppx-mcp-sdk-server.js.map +1 -0
  5. package/dist/__mocks__/mppx-server.d.ts +12 -0
  6. package/dist/__mocks__/mppx-server.d.ts.map +1 -0
  7. package/dist/__mocks__/mppx-server.js +12 -0
  8. package/dist/__mocks__/mppx-server.js.map +1 -0
  9. package/dist/apps/download.d.ts +2 -0
  10. package/dist/apps/download.d.ts.map +1 -0
  11. package/dist/apps/download.js +125 -0
  12. package/dist/apps/download.js.map +1 -0
  13. package/dist/apps/generated/shared-bundle.d.ts +5 -0
  14. package/dist/apps/generated/shared-bundle.d.ts.map +1 -0
  15. package/dist/apps/generated/shared-bundle.js +7 -0
  16. package/dist/apps/generated/shared-bundle.js.map +1 -0
  17. package/dist/apps/shared.d.ts +15 -0
  18. package/dist/apps/shared.d.ts.map +1 -0
  19. package/dist/apps/shared.js +480 -0
  20. package/dist/apps/shared.js.map +1 -0
  21. package/dist/apps/upload.d.ts +2 -0
  22. package/dist/apps/upload.d.ts.map +1 -0
  23. package/dist/apps/upload.js +280 -0
  24. package/dist/apps/upload.js.map +1 -0
  25. package/dist/config.d.ts +9 -30
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +36 -12
  28. package/dist/config.js.map +1 -1
  29. package/dist/index.js +3 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/prompts/index.js +24 -24
  32. package/dist/prompts/index.js.map +1 -1
  33. package/dist/resources/index.d.ts +4 -2
  34. package/dist/resources/index.d.ts.map +1 -1
  35. package/dist/resources/index.js +133 -54
  36. package/dist/resources/index.js.map +1 -1
  37. package/dist/resources/llms-primer.d.ts +2 -0
  38. package/dist/resources/llms-primer.d.ts.map +1 -0
  39. package/dist/resources/llms-primer.js +68 -0
  40. package/dist/resources/llms-primer.js.map +1 -0
  41. package/dist/server-instructions.d.ts +9 -0
  42. package/dist/server-instructions.d.ts.map +1 -0
  43. package/dist/server-instructions.js +34 -0
  44. package/dist/server-instructions.js.map +1 -0
  45. package/dist/server.d.ts +17 -0
  46. package/dist/server.d.ts.map +1 -1
  47. package/dist/server.js +103 -14
  48. package/dist/server.js.map +1 -1
  49. package/dist/tools/agreement-types.d.ts +27 -0
  50. package/dist/tools/agreement-types.d.ts.map +1 -0
  51. package/dist/tools/agreement-types.js +387 -0
  52. package/dist/tools/agreement-types.js.map +1 -0
  53. package/dist/tools/agreements.d.ts +20 -0
  54. package/dist/tools/agreements.d.ts.map +1 -0
  55. package/dist/tools/agreements.js +363 -0
  56. package/dist/tools/agreements.js.map +1 -0
  57. package/dist/tools/analytics.d.ts +20 -0
  58. package/dist/tools/analytics.d.ts.map +1 -0
  59. package/dist/tools/analytics.js +124 -0
  60. package/dist/tools/analytics.js.map +1 -0
  61. package/dist/tools/app-tools.d.ts +21 -0
  62. package/dist/tools/app-tools.d.ts.map +1 -0
  63. package/dist/tools/app-tools.js +248 -0
  64. package/dist/tools/app-tools.js.map +1 -0
  65. package/dist/tools/assets.d.ts +25 -0
  66. package/dist/tools/assets.d.ts.map +1 -0
  67. package/dist/tools/assets.js +631 -0
  68. package/dist/tools/assets.js.map +1 -0
  69. package/dist/tools/audio-files.d.ts +20 -0
  70. package/dist/tools/audio-files.d.ts.map +1 -0
  71. package/dist/tools/audio-files.js +384 -0
  72. package/dist/tools/audio-files.js.map +1 -0
  73. package/dist/tools/auth.d.ts +22 -0
  74. package/dist/tools/auth.d.ts.map +1 -0
  75. package/dist/tools/auth.js +210 -0
  76. package/dist/tools/auth.js.map +1 -0
  77. package/dist/tools/bulk.d.ts +16 -0
  78. package/dist/tools/bulk.d.ts.map +1 -0
  79. package/dist/tools/bulk.js +85 -0
  80. package/dist/tools/bulk.js.map +1 -0
  81. package/dist/tools/calendar.d.ts +15 -0
  82. package/dist/tools/calendar.d.ts.map +1 -0
  83. package/dist/tools/calendar.js +67 -0
  84. package/dist/tools/calendar.js.map +1 -0
  85. package/dist/tools/collaborators.d.ts +21 -0
  86. package/dist/tools/collaborators.d.ts.map +1 -0
  87. package/dist/tools/collaborators.js +311 -0
  88. package/dist/tools/collaborators.js.map +1 -0
  89. package/dist/tools/comparisons.d.ts +22 -0
  90. package/dist/tools/comparisons.d.ts.map +1 -0
  91. package/dist/tools/comparisons.js +78 -0
  92. package/dist/tools/comparisons.js.map +1 -0
  93. package/dist/tools/credits.d.ts +17 -0
  94. package/dist/tools/credits.d.ts.map +1 -0
  95. package/dist/tools/credits.js +312 -0
  96. package/dist/tools/credits.js.map +1 -0
  97. package/dist/tools/custody-hints.d.ts +16 -0
  98. package/dist/tools/custody-hints.d.ts.map +1 -0
  99. package/dist/tools/custody-hints.js +27 -0
  100. package/dist/tools/custody-hints.js.map +1 -0
  101. package/dist/tools/custody.d.ts +38 -0
  102. package/dist/tools/custody.d.ts.map +1 -0
  103. package/dist/tools/custody.js +274 -0
  104. package/dist/tools/custody.js.map +1 -0
  105. package/dist/tools/dashboard.d.ts +19 -0
  106. package/dist/tools/dashboard.d.ts.map +1 -0
  107. package/dist/tools/dashboard.js +146 -0
  108. package/dist/tools/dashboard.js.map +1 -0
  109. package/dist/tools/directory.d.ts +15 -0
  110. package/dist/tools/directory.d.ts.map +1 -0
  111. package/dist/tools/directory.js +106 -0
  112. package/dist/tools/directory.js.map +1 -0
  113. package/dist/tools/discovery.d.ts +28 -0
  114. package/dist/tools/discovery.d.ts.map +1 -0
  115. package/dist/tools/discovery.js +560 -0
  116. package/dist/tools/discovery.js.map +1 -0
  117. package/dist/tools/disputes.d.ts +18 -0
  118. package/dist/tools/disputes.d.ts.map +1 -0
  119. package/dist/tools/disputes.js +61 -0
  120. package/dist/tools/disputes.js.map +1 -0
  121. package/dist/tools/documents.d.ts +15 -0
  122. package/dist/tools/documents.d.ts.map +1 -0
  123. package/dist/tools/documents.js +36 -0
  124. package/dist/tools/documents.js.map +1 -0
  125. package/dist/tools/duplicates.d.ts +16 -0
  126. package/dist/tools/duplicates.d.ts.map +1 -0
  127. package/dist/tools/duplicates.js +87 -0
  128. package/dist/tools/duplicates.js.map +1 -0
  129. package/dist/tools/enrichment.d.ts +23 -0
  130. package/dist/tools/enrichment.d.ts.map +1 -0
  131. package/dist/tools/enrichment.js +220 -0
  132. package/dist/tools/enrichment.js.map +1 -0
  133. package/dist/tools/exports.d.ts +19 -0
  134. package/dist/tools/exports.d.ts.map +1 -0
  135. package/dist/tools/exports.js +175 -0
  136. package/dist/tools/exports.js.map +1 -0
  137. package/dist/tools/import-documents.d.ts +21 -0
  138. package/dist/tools/import-documents.d.ts.map +1 -0
  139. package/dist/tools/import-documents.js +203 -0
  140. package/dist/tools/import-documents.js.map +1 -0
  141. package/dist/tools/import.d.ts +30 -0
  142. package/dist/tools/import.d.ts.map +1 -0
  143. package/dist/tools/import.js +455 -0
  144. package/dist/tools/import.js.map +1 -0
  145. package/dist/tools/index.d.ts +67 -5
  146. package/dist/tools/index.d.ts.map +1 -1
  147. package/dist/tools/index.js +448 -84
  148. package/dist/tools/index.js.map +1 -1
  149. package/dist/tools/integrations.d.ts +15 -0
  150. package/dist/tools/integrations.d.ts.map +1 -0
  151. package/dist/tools/integrations.js +100 -0
  152. package/dist/tools/integrations.js.map +1 -0
  153. package/dist/tools/licensing.d.ts +40 -0
  154. package/dist/tools/licensing.d.ts.map +1 -0
  155. package/dist/tools/licensing.js +431 -0
  156. package/dist/tools/licensing.js.map +1 -0
  157. package/dist/tools/memory.d.ts +21 -0
  158. package/dist/tools/memory.d.ts.map +1 -0
  159. package/dist/tools/memory.js +116 -0
  160. package/dist/tools/memory.js.map +1 -0
  161. package/dist/tools/metadata.d.ts +15 -0
  162. package/dist/tools/metadata.d.ts.map +1 -0
  163. package/dist/tools/metadata.js +1106 -0
  164. package/dist/tools/metadata.js.map +1 -0
  165. package/dist/tools/multimedia.d.ts +19 -0
  166. package/dist/tools/multimedia.d.ts.map +1 -0
  167. package/dist/tools/multimedia.js +291 -0
  168. package/dist/tools/multimedia.js.map +1 -0
  169. package/dist/tools/notes.d.ts +21 -0
  170. package/dist/tools/notes.d.ts.map +1 -0
  171. package/dist/tools/notes.js +108 -0
  172. package/dist/tools/notes.js.map +1 -0
  173. package/dist/tools/notifications.d.ts +20 -0
  174. package/dist/tools/notifications.d.ts.map +1 -0
  175. package/dist/tools/notifications.js +266 -0
  176. package/dist/tools/notifications.js.map +1 -0
  177. package/dist/tools/people.d.ts +5 -13
  178. package/dist/tools/people.d.ts.map +1 -1
  179. package/dist/tools/people.js +148 -109
  180. package/dist/tools/people.js.map +1 -1
  181. package/dist/tools/projects.d.ts +19 -0
  182. package/dist/tools/projects.d.ts.map +1 -0
  183. package/dist/tools/projects.js +140 -0
  184. package/dist/tools/projects.js.map +1 -0
  185. package/dist/tools/publishers.d.ts +16 -0
  186. package/dist/tools/publishers.d.ts.map +1 -0
  187. package/dist/tools/publishers.js +69 -0
  188. package/dist/tools/publishers.js.map +1 -0
  189. package/dist/tools/purchases.d.ts +15 -0
  190. package/dist/tools/purchases.d.ts.map +1 -0
  191. package/dist/tools/purchases.js +63 -0
  192. package/dist/tools/purchases.js.map +1 -0
  193. package/dist/tools/recordings.d.ts +35 -35
  194. package/dist/tools/recordings.d.ts.map +1 -1
  195. package/dist/tools/recordings.js +136 -48
  196. package/dist/tools/recordings.js.map +1 -1
  197. package/dist/tools/recovery-hints.d.ts +14 -0
  198. package/dist/tools/recovery-hints.d.ts.map +1 -0
  199. package/dist/tools/recovery-hints.js +277 -0
  200. package/dist/tools/recovery-hints.js.map +1 -0
  201. package/dist/tools/releases.d.ts +18 -0
  202. package/dist/tools/releases.d.ts.map +1 -0
  203. package/dist/tools/releases.js +128 -0
  204. package/dist/tools/releases.js.map +1 -0
  205. package/dist/tools/royalties.d.ts +23 -0
  206. package/dist/tools/royalties.d.ts.map +1 -0
  207. package/dist/tools/royalties.js +257 -0
  208. package/dist/tools/royalties.js.map +1 -0
  209. package/dist/tools/search.d.ts +1 -1
  210. package/dist/tools/search.d.ts.map +1 -1
  211. package/dist/tools/search.js +3 -3
  212. package/dist/tools/search.js.map +1 -1
  213. package/dist/tools/send.d.ts +17 -0
  214. package/dist/tools/send.d.ts.map +1 -0
  215. package/dist/tools/send.js +185 -0
  216. package/dist/tools/send.js.map +1 -0
  217. package/dist/tools/sessions.d.ts +18 -0
  218. package/dist/tools/sessions.d.ts.map +1 -0
  219. package/dist/tools/sessions.js +115 -0
  220. package/dist/tools/sessions.js.map +1 -0
  221. package/dist/tools/settings.d.ts +18 -0
  222. package/dist/tools/settings.d.ts.map +1 -0
  223. package/dist/tools/settings.js +96 -0
  224. package/dist/tools/settings.js.map +1 -0
  225. package/dist/tools/share-links.d.ts +19 -0
  226. package/dist/tools/share-links.d.ts.map +1 -0
  227. package/dist/tools/share-links.js +121 -0
  228. package/dist/tools/share-links.js.map +1 -0
  229. package/dist/tools/split-sheets.d.ts +25 -0
  230. package/dist/tools/split-sheets.d.ts.map +1 -0
  231. package/dist/tools/split-sheets.js +307 -0
  232. package/dist/tools/split-sheets.js.map +1 -0
  233. package/dist/tools/team.d.ts +22 -0
  234. package/dist/tools/team.d.ts.map +1 -0
  235. package/dist/tools/team.js +134 -0
  236. package/dist/tools/team.js.map +1 -0
  237. package/dist/tools/telegram.d.ts +21 -0
  238. package/dist/tools/telegram.d.ts.map +1 -0
  239. package/dist/tools/telegram.js +141 -0
  240. package/dist/tools/telegram.js.map +1 -0
  241. package/dist/tools/uploads.d.ts +17 -0
  242. package/dist/tools/uploads.d.ts.map +1 -0
  243. package/dist/tools/uploads.js +156 -0
  244. package/dist/tools/uploads.js.map +1 -0
  245. package/dist/tools/works.d.ts +5 -13
  246. package/dist/tools/works.d.ts.map +1 -1
  247. package/dist/tools/works.js +219 -116
  248. package/dist/tools/works.js.map +1 -1
  249. package/package.json +1 -1
  250. package/dist/pica-sdk.d.ts +0 -1231
  251. package/dist/pica-sdk.d.ts.map +0 -1
  252. package/dist/pica-sdk.js +0 -1403
  253. package/dist/pica-sdk.js.map +0 -1
  254. package/dist/utils/errors.d.ts +0 -29
  255. package/dist/utils/errors.d.ts.map +0 -1
  256. package/dist/utils/errors.js +0 -115
  257. package/dist/utils/errors.js.map +0 -1
  258. package/dist/utils/formatting.d.ts +0 -82
  259. package/dist/utils/formatting.d.ts.map +0 -1
  260. package/dist/utils/formatting.js +0 -125
  261. package/dist/utils/formatting.js.map +0 -1
@@ -0,0 +1,277 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ export const RECOVERY_HINTS = {
3
+ // ── destructive tools ──
4
+ pica_works_delete: [
5
+ {
6
+ error_code: "NOT_FOUND",
7
+ suggestion: "search for the work by title",
8
+ next_tool: "pica_works_query",
9
+ },
10
+ {
11
+ error_code: "HAS_DEPENDENCIES",
12
+ suggestion: "check what's linked to this work first",
13
+ next_tool: "pica_works_inspect",
14
+ },
15
+ ],
16
+ pica_works_bulk_delete: [
17
+ {
18
+ error_code: "PARTIAL_NOT_FOUND",
19
+ suggestion: "some IDs not found — list your works to verify",
20
+ next_tool: "pica_works_query",
21
+ },
22
+ ],
23
+ pica_people_delete: [
24
+ {
25
+ error_code: "NOT_FOUND",
26
+ suggestion: "search for the person by name",
27
+ next_tool: "pica_people_query",
28
+ },
29
+ {
30
+ error_code: "PERSON_HAS_CREDITS",
31
+ suggestion: "check their credits before removing",
32
+ next_tool: "pica_people_inspect",
33
+ },
34
+ ],
35
+ pica_recordings_delete: [
36
+ {
37
+ error_code: "NOT_FOUND",
38
+ suggestion: "list recordings for this work",
39
+ next_tool: "pica_recordings_query",
40
+ },
41
+ ],
42
+ pica_agreements_delete: [
43
+ {
44
+ error_code: "NOT_FOUND",
45
+ suggestion: "list your agreements to find the right one",
46
+ next_tool: "pica_agreements_query",
47
+ },
48
+ {
49
+ error_code: "HAS_LINKED_WORKS",
50
+ suggestion: "check what works are linked",
51
+ next_tool: "pica_agreements_inspect",
52
+ },
53
+ ],
54
+ pica_projects_delete: [
55
+ {
56
+ error_code: "NOT_FOUND",
57
+ suggestion: "list your projects",
58
+ next_tool: "pica_projects_list",
59
+ },
60
+ ],
61
+ pica_merge_duplicates: [
62
+ {
63
+ error_code: "ENTITY_NOT_FOUND",
64
+ suggestion: "check both entities exist",
65
+ next_tool: "pica_find_duplicates",
66
+ },
67
+ {
68
+ error_code: "MERGE_CONFLICT",
69
+ suggestion: "compare the entities first",
70
+ next_tool: "pica_enrichment_compare",
71
+ },
72
+ ],
73
+ pica_team_remove: [
74
+ {
75
+ error_code: "CANNOT_REMOVE_OWNER",
76
+ suggestion: "check team roles",
77
+ next_tool: "pica_team_list",
78
+ },
79
+ {
80
+ error_code: "NOT_FOUND",
81
+ suggestion: "list team members",
82
+ next_tool: "pica_team_list",
83
+ },
84
+ ],
85
+ pica_notes_delete: [
86
+ {
87
+ error_code: "NOT_FOUND",
88
+ suggestion: "list your notes",
89
+ next_tool: "pica_notes_list",
90
+ },
91
+ ],
92
+ pica_memory_delete: [
93
+ {
94
+ error_code: "NOT_FOUND",
95
+ suggestion: "list your memories",
96
+ next_tool: "pica_memory_list",
97
+ },
98
+ ],
99
+ pica_physical_assets_delete: [
100
+ {
101
+ error_code: "NOT_FOUND",
102
+ suggestion: "list your assets",
103
+ next_tool: "pica_physical_assets_query",
104
+ },
105
+ ],
106
+ pica_agreement_templates_delete: [
107
+ {
108
+ error_code: "NOT_FOUND",
109
+ suggestion: "list your agreement templates",
110
+ next_tool: "pica_agreement_templates_list",
111
+ },
112
+ ],
113
+ pica_producer_agreements_delete: [
114
+ {
115
+ error_code: "NOT_FOUND",
116
+ suggestion: "list your producer agreements",
117
+ next_tool: "pica_producer_agreements_list",
118
+ },
119
+ ],
120
+ pica_work_for_hire_delete: [
121
+ {
122
+ error_code: "NOT_FOUND",
123
+ suggestion: "list your work-for-hire agreements",
124
+ next_tool: "pica_work_for_hire_list",
125
+ },
126
+ ],
127
+ // ── enrichment tools ──
128
+ pica_enrich_work_spotify: [
129
+ {
130
+ error_code: "NO_MATCH",
131
+ suggestion: "no Spotify match — try MusicBrainz",
132
+ next_tool: "pica_enrich_work_musicbrainz",
133
+ },
134
+ {
135
+ error_code: "MISSING_INPUT",
136
+ suggestion: "provide a Spotify URL or ensure the work has a spotify_track_uri",
137
+ next_tool: "pica_works_update",
138
+ },
139
+ ],
140
+ pica_enrich_work_musicbrainz: [
141
+ {
142
+ error_code: "NO_MATCH",
143
+ suggestion: "no MusicBrainz match — try MLC",
144
+ next_tool: "pica_enrich_work_mlc",
145
+ },
146
+ ],
147
+ pica_enrich_work_mlc: [
148
+ {
149
+ error_code: "NO_MATCH",
150
+ suggestion: "no MLC match — try Discogs",
151
+ next_tool: "pica_enrich_work_discogs",
152
+ },
153
+ {
154
+ error_code: "CREDIT_INSUFFICIENT",
155
+ suggestion: "check your credit balance",
156
+ next_tool: "pica_credits_balance",
157
+ },
158
+ ],
159
+ pica_enrich_work_discogs: [
160
+ {
161
+ error_code: "NO_MATCH",
162
+ suggestion: "no Discogs match — try adding identifiers manually",
163
+ next_tool: "pica_works_update",
164
+ },
165
+ ],
166
+ pica_enrich_work_youtube: [
167
+ {
168
+ error_code: "NO_MATCH",
169
+ suggestion: "no YouTube data — ensure a YouTube video is linked",
170
+ next_tool: "pica_multimedia_link_youtube",
171
+ },
172
+ ],
173
+ pica_people_enrich_isni: [
174
+ {
175
+ error_code: "NO_MATCH",
176
+ suggestion: "no ISNI match — try MusicBrainz",
177
+ next_tool: "pica_people_enrich_musicbrainz",
178
+ },
179
+ ],
180
+ pica_people_enrich_musicbrainz: [
181
+ {
182
+ error_code: "NO_MATCH",
183
+ suggestion: "no MusicBrainz match — try adding identifiers manually",
184
+ next_tool: "pica_people_update",
185
+ },
186
+ ],
187
+ // ── mutating tools ──
188
+ pica_works_create: [
189
+ {
190
+ error_code: "DUPLICATE_WORK",
191
+ suggestion: "a similar work already exists — search first",
192
+ next_tool: "pica_works_query",
193
+ },
194
+ ],
195
+ pica_people_create: [
196
+ {
197
+ error_code: "DUPLICATE_PERSON",
198
+ suggestion: "a similar person already exists — search first",
199
+ next_tool: "pica_people_query",
200
+ },
201
+ ],
202
+ pica_credits_update: [
203
+ {
204
+ error_code: "SPLITS_NOT_100",
205
+ suggestion: "credit splits must total 100% — check current splits",
206
+ next_tool: "pica_credits_list",
207
+ },
208
+ {
209
+ error_code: "PERSON_NOT_FOUND",
210
+ suggestion: "person not in catalog — create them first",
211
+ next_tool: "pica_people_create",
212
+ },
213
+ ],
214
+ pica_split_sheet_generate: [
215
+ {
216
+ error_code: "SPLITS_NOT_100",
217
+ suggestion: "fix credits before generating split sheet",
218
+ next_tool: "pica_credits_update",
219
+ },
220
+ ],
221
+ pica_import_execute: [
222
+ {
223
+ error_code: "VALIDATION_ERROR",
224
+ suggestion: "validate the import first to see row-level issues",
225
+ next_tool: "pica_import_validate",
226
+ },
227
+ ],
228
+ pica_export_song_registration: [
229
+ {
230
+ error_code: "CREDIT_INSUFFICIENT",
231
+ suggestion: "song registration export costs 1 credit",
232
+ next_tool: "pica_credits_balance",
233
+ },
234
+ ],
235
+ pica_export_catalog_asset_report: [
236
+ {
237
+ error_code: "CREDIT_INSUFFICIENT",
238
+ suggestion: "catalog asset report costs 5 credits",
239
+ next_tool: "pica_credits_balance",
240
+ },
241
+ ],
242
+ pica_audio_analyze: [
243
+ {
244
+ error_code: "CREDIT_INSUFFICIENT",
245
+ suggestion: "audio analysis costs credits",
246
+ next_tool: "pica_credits_balance",
247
+ },
248
+ ],
249
+ pica_audio_identify: [
250
+ {
251
+ error_code: "NO_MATCH",
252
+ suggestion: "no fingerprint match — enter metadata manually",
253
+ next_tool: "pica_works_update",
254
+ },
255
+ ],
256
+ pica_notify_person: [
257
+ {
258
+ error_code: "NOT_PICA_USER",
259
+ suggestion: "person isn't on PICA — invite them first",
260
+ next_tool: "pica_collaborators_invite",
261
+ },
262
+ ],
263
+ pica_recordings_create: [
264
+ {
265
+ error_code: "DUPLICATE_ISRC",
266
+ suggestion: "recording with this ISRC already exists",
267
+ next_tool: "pica_recordings_by_work",
268
+ },
269
+ ],
270
+ };
271
+ export function getRecoveryHint(toolName, errorCode) {
272
+ const hints = RECOVERY_HINTS[toolName];
273
+ if (!hints)
274
+ return undefined;
275
+ return hints.find((h) => h.error_code === errorCode);
276
+ }
277
+ //# sourceMappingURL=recovery-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-hints.js","sourceRoot":"","sources":["../../src/tools/recovery-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Releases Tools — manage releases (albums, EPs, singles with release dates, labels, and UPCs)
3
+ */
4
+ import { PicaClient } from "@withpica/mcp-sdk";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class ReleasesTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private listReleases;
14
+ private getRelease;
15
+ private createRelease;
16
+ private updateRelease;
17
+ }
18
+ //# sourceMappingURL=releases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releases.d.ts","sourceRoot":"","sources":["../../src/tools/releases.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,aAAa;IACxB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAuG3D,YAAY;YAQZ,UAAU;YAKV,aAAa;YAMb,aAAa;CAK5B"}
@@ -0,0 +1,128 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ import { formatSuccess, formatStructuredList } from "@withpica/mcp-utils";
3
+ export class ReleasesTools {
4
+ pica;
5
+ constructor(pica) {
6
+ this.pica = pica;
7
+ }
8
+ getTools() {
9
+ return [
10
+ {
11
+ definition: {
12
+ name: "pica_releases_list",
13
+ description: "List releases — albums, EPs, and singles with release dates, labels, and UPCs.",
14
+ inputSchema: {
15
+ type: "object",
16
+ properties: {
17
+ limit: {
18
+ type: "number",
19
+ description: "Max results to return (default 50)",
20
+ },
21
+ },
22
+ },
23
+ },
24
+ executor: this.listReleases.bind(this),
25
+ },
26
+ {
27
+ definition: {
28
+ name: "pica_releases_get",
29
+ description: "Get release details including tracks.",
30
+ inputSchema: {
31
+ type: "object",
32
+ properties: {
33
+ id: { type: "string", description: "Release ID" },
34
+ },
35
+ required: ["id"],
36
+ },
37
+ },
38
+ executor: this.getRelease.bind(this),
39
+ },
40
+ {
41
+ definition: {
42
+ name: "pica_releases_create",
43
+ description: "Create a new release — set the title, date, release type, label, and UPC.",
44
+ inputSchema: {
45
+ type: "object",
46
+ properties: {
47
+ title: {
48
+ type: "string",
49
+ description: "Release title",
50
+ },
51
+ release_date: {
52
+ type: "string",
53
+ description: "Release date (YYYY-MM-DD)",
54
+ },
55
+ release_type: {
56
+ type: "string",
57
+ description: "Release type (album, ep, single, compilation)",
58
+ },
59
+ upc: {
60
+ type: "string",
61
+ description: "Universal Product Code (UPC/EAN barcode)",
62
+ },
63
+ catalog_number: {
64
+ type: "string",
65
+ description: "Label catalog number",
66
+ },
67
+ },
68
+ required: ["title"],
69
+ },
70
+ },
71
+ executor: this.createRelease.bind(this),
72
+ },
73
+ {
74
+ definition: {
75
+ name: "pica_releases_update",
76
+ description: "Update release details — title, date, release type, label, UPC, or catalog number.",
77
+ inputSchema: {
78
+ type: "object",
79
+ properties: {
80
+ id: { type: "string", description: "Release ID" },
81
+ title: { type: "string", description: "Updated title" },
82
+ release_date: {
83
+ type: "string",
84
+ description: "Updated release date (YYYY-MM-DD)",
85
+ },
86
+ release_type: {
87
+ type: "string",
88
+ description: "Updated release type (album, ep, single, compilation)",
89
+ },
90
+ upc: {
91
+ type: "string",
92
+ description: "Updated UPC",
93
+ },
94
+ catalog_number: {
95
+ type: "string",
96
+ description: "Updated catalog number",
97
+ },
98
+ },
99
+ required: ["id"],
100
+ },
101
+ },
102
+ executor: this.updateRelease.bind(this),
103
+ },
104
+ ];
105
+ }
106
+ async listReleases(args) {
107
+ const result = await this.pica.releases.list({
108
+ limit: args.limit,
109
+ });
110
+ const releases = Array.isArray(result) ? result : [];
111
+ return formatStructuredList(releases, "release");
112
+ }
113
+ async getRelease(args) {
114
+ const release = await this.pica.releases.get(args.id);
115
+ return formatSuccess("Release retrieved", release);
116
+ }
117
+ async createRelease(args) {
118
+ const { id, ...data } = args;
119
+ const release = await this.pica.releases.create(data);
120
+ return formatSuccess("Release created", release);
121
+ }
122
+ async updateRelease(args) {
123
+ const { id, ...updates } = args;
124
+ const release = await this.pica.releases.update(id, updates);
125
+ return formatSuccess("Release updated", release);
126
+ }
127
+ }
128
+ //# sourceMappingURL=releases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"releases.js","sourceRoot":"","sources":["../../src/tools/releases.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Royalties & Statements MCP Tools — ADR-139 Step 2
3
+ *
4
+ * Un-cuts the royalty data layer that was archived in the March 2026
5
+ * UI simplification. The API routes and services still exist — these
6
+ * tools expose them to AI assistants.
7
+ */
8
+ import { PicaClient } from "@withpica/mcp-sdk";
9
+ import type { ToolDefinition, ToolExecutor } from "./index.js";
10
+ export declare class RoyaltiesTools {
11
+ private pica;
12
+ constructor(pica: PicaClient);
13
+ getTools(): Array<{
14
+ definition: ToolDefinition;
15
+ executor: ToolExecutor;
16
+ }>;
17
+ private listPayments;
18
+ private getEarnings;
19
+ private getGaps;
20
+ private listStatements;
21
+ private getStatement;
22
+ }
23
+ //# sourceMappingURL=royalties.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"royalties.d.ts","sourceRoot":"","sources":["../../src/tools/royalties.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAO3E,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAsL3D,YAAY;YA2BZ,WAAW;YAWX,OAAO;YAkCP,cAAc;YAiBd,YAAY;CAW3B"}