@withpica/mcp-server 2.6.2 → 2.7.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 (256) hide show
  1. package/dist/config.d.ts +25 -4
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +12 -36
  4. package/dist/config.js.map +1 -1
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +3 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/pica-sdk.d.ts +1231 -0
  9. package/dist/pica-sdk.d.ts.map +1 -0
  10. package/dist/pica-sdk.js +1403 -0
  11. package/dist/pica-sdk.js.map +1 -0
  12. package/dist/prompts/index.d.ts +64 -64
  13. package/dist/prompts/index.js +24 -24
  14. package/dist/prompts/index.js.map +1 -1
  15. package/dist/resources/index.d.ts +53 -55
  16. package/dist/resources/index.d.ts.map +1 -1
  17. package/dist/resources/index.js +54 -133
  18. package/dist/resources/index.js.map +1 -1
  19. package/dist/server.d.ts +32 -49
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +14 -103
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/index.d.ts +37 -83
  24. package/dist/tools/index.d.ts.map +1 -1
  25. package/dist/tools/index.js +84 -442
  26. package/dist/tools/index.js.map +1 -1
  27. package/dist/tools/people.d.ts +47 -39
  28. package/dist/tools/people.d.ts.map +1 -1
  29. package/dist/tools/people.js +109 -148
  30. package/dist/tools/people.js.map +1 -1
  31. package/dist/tools/recordings.d.ts +9 -9
  32. package/dist/tools/recordings.d.ts.map +1 -1
  33. package/dist/tools/recordings.js +48 -121
  34. package/dist/tools/recordings.js.map +1 -1
  35. package/dist/tools/search.d.ts +21 -21
  36. package/dist/tools/search.d.ts.map +1 -1
  37. package/dist/tools/search.js +3 -3
  38. package/dist/tools/search.js.map +1 -1
  39. package/dist/tools/works.d.ts +47 -39
  40. package/dist/tools/works.d.ts.map +1 -1
  41. package/dist/tools/works.js +116 -201
  42. package/dist/tools/works.js.map +1 -1
  43. package/dist/utils/errors.d.ts +29 -0
  44. package/dist/utils/errors.d.ts.map +1 -0
  45. package/dist/utils/errors.js +115 -0
  46. package/dist/utils/errors.js.map +1 -0
  47. package/dist/utils/formatting.d.ts +82 -0
  48. package/dist/utils/formatting.d.ts.map +1 -0
  49. package/dist/utils/formatting.js +125 -0
  50. package/dist/utils/formatting.js.map +1 -0
  51. package/package.json +1 -1
  52. package/server.json +1 -1
  53. package/dist/__mocks__/mppx-mcp-sdk-server.d.ts +0 -6
  54. package/dist/__mocks__/mppx-mcp-sdk-server.d.ts.map +0 -1
  55. package/dist/__mocks__/mppx-mcp-sdk-server.js +0 -6
  56. package/dist/__mocks__/mppx-mcp-sdk-server.js.map +0 -1
  57. package/dist/__mocks__/mppx-server.d.ts +0 -12
  58. package/dist/__mocks__/mppx-server.d.ts.map +0 -1
  59. package/dist/__mocks__/mppx-server.js +0 -12
  60. package/dist/__mocks__/mppx-server.js.map +0 -1
  61. package/dist/apps/download.d.ts +0 -2
  62. package/dist/apps/download.d.ts.map +0 -1
  63. package/dist/apps/download.js +0 -125
  64. package/dist/apps/download.js.map +0 -1
  65. package/dist/apps/generated/shared-bundle.d.ts +0 -5
  66. package/dist/apps/generated/shared-bundle.d.ts.map +0 -1
  67. package/dist/apps/generated/shared-bundle.js +0 -7
  68. package/dist/apps/generated/shared-bundle.js.map +0 -1
  69. package/dist/apps/shared.d.ts +0 -15
  70. package/dist/apps/shared.d.ts.map +0 -1
  71. package/dist/apps/shared.js +0 -480
  72. package/dist/apps/shared.js.map +0 -1
  73. package/dist/apps/upload.d.ts +0 -2
  74. package/dist/apps/upload.d.ts.map +0 -1
  75. package/dist/apps/upload.js +0 -280
  76. package/dist/apps/upload.js.map +0 -1
  77. package/dist/resources/llms-primer.d.ts +0 -2
  78. package/dist/resources/llms-primer.d.ts.map +0 -1
  79. package/dist/resources/llms-primer.js +0 -68
  80. package/dist/resources/llms-primer.js.map +0 -1
  81. package/dist/server-instructions.d.ts +0 -9
  82. package/dist/server-instructions.d.ts.map +0 -1
  83. package/dist/server-instructions.js +0 -34
  84. package/dist/server-instructions.js.map +0 -1
  85. package/dist/tools/agreement-types.d.ts +0 -27
  86. package/dist/tools/agreement-types.d.ts.map +0 -1
  87. package/dist/tools/agreement-types.js +0 -387
  88. package/dist/tools/agreement-types.js.map +0 -1
  89. package/dist/tools/agreements.d.ts +0 -20
  90. package/dist/tools/agreements.d.ts.map +0 -1
  91. package/dist/tools/agreements.js +0 -363
  92. package/dist/tools/agreements.js.map +0 -1
  93. package/dist/tools/analytics.d.ts +0 -20
  94. package/dist/tools/analytics.d.ts.map +0 -1
  95. package/dist/tools/analytics.js +0 -124
  96. package/dist/tools/analytics.js.map +0 -1
  97. package/dist/tools/app-tools.d.ts +0 -21
  98. package/dist/tools/app-tools.d.ts.map +0 -1
  99. package/dist/tools/app-tools.js +0 -248
  100. package/dist/tools/app-tools.js.map +0 -1
  101. package/dist/tools/assets.d.ts +0 -21
  102. package/dist/tools/assets.d.ts.map +0 -1
  103. package/dist/tools/assets.js +0 -441
  104. package/dist/tools/assets.js.map +0 -1
  105. package/dist/tools/audio-files.d.ts +0 -20
  106. package/dist/tools/audio-files.d.ts.map +0 -1
  107. package/dist/tools/audio-files.js +0 -384
  108. package/dist/tools/audio-files.js.map +0 -1
  109. package/dist/tools/auth.d.ts +0 -22
  110. package/dist/tools/auth.d.ts.map +0 -1
  111. package/dist/tools/auth.js +0 -210
  112. package/dist/tools/auth.js.map +0 -1
  113. package/dist/tools/bulk.d.ts +0 -16
  114. package/dist/tools/bulk.d.ts.map +0 -1
  115. package/dist/tools/bulk.js +0 -85
  116. package/dist/tools/bulk.js.map +0 -1
  117. package/dist/tools/calendar.d.ts +0 -15
  118. package/dist/tools/calendar.d.ts.map +0 -1
  119. package/dist/tools/calendar.js +0 -67
  120. package/dist/tools/calendar.js.map +0 -1
  121. package/dist/tools/collaborators.d.ts +0 -17
  122. package/dist/tools/collaborators.d.ts.map +0 -1
  123. package/dist/tools/collaborators.js +0 -131
  124. package/dist/tools/collaborators.js.map +0 -1
  125. package/dist/tools/comparisons.d.ts +0 -22
  126. package/dist/tools/comparisons.d.ts.map +0 -1
  127. package/dist/tools/comparisons.js +0 -78
  128. package/dist/tools/comparisons.js.map +0 -1
  129. package/dist/tools/credits.d.ts +0 -17
  130. package/dist/tools/credits.d.ts.map +0 -1
  131. package/dist/tools/credits.js +0 -312
  132. package/dist/tools/credits.js.map +0 -1
  133. package/dist/tools/dashboard.d.ts +0 -19
  134. package/dist/tools/dashboard.d.ts.map +0 -1
  135. package/dist/tools/dashboard.js +0 -146
  136. package/dist/tools/dashboard.js.map +0 -1
  137. package/dist/tools/directory.d.ts +0 -15
  138. package/dist/tools/directory.d.ts.map +0 -1
  139. package/dist/tools/directory.js +0 -106
  140. package/dist/tools/directory.js.map +0 -1
  141. package/dist/tools/discovery.d.ts +0 -28
  142. package/dist/tools/discovery.d.ts.map +0 -1
  143. package/dist/tools/discovery.js +0 -560
  144. package/dist/tools/discovery.js.map +0 -1
  145. package/dist/tools/disputes.d.ts +0 -18
  146. package/dist/tools/disputes.d.ts.map +0 -1
  147. package/dist/tools/disputes.js +0 -61
  148. package/dist/tools/disputes.js.map +0 -1
  149. package/dist/tools/documents.d.ts +0 -15
  150. package/dist/tools/documents.d.ts.map +0 -1
  151. package/dist/tools/documents.js +0 -36
  152. package/dist/tools/documents.js.map +0 -1
  153. package/dist/tools/duplicates.d.ts +0 -16
  154. package/dist/tools/duplicates.d.ts.map +0 -1
  155. package/dist/tools/duplicates.js +0 -87
  156. package/dist/tools/duplicates.js.map +0 -1
  157. package/dist/tools/enrichment.d.ts +0 -20
  158. package/dist/tools/enrichment.d.ts.map +0 -1
  159. package/dist/tools/enrichment.js +0 -154
  160. package/dist/tools/enrichment.js.map +0 -1
  161. package/dist/tools/exports.d.ts +0 -19
  162. package/dist/tools/exports.d.ts.map +0 -1
  163. package/dist/tools/exports.js +0 -175
  164. package/dist/tools/exports.js.map +0 -1
  165. package/dist/tools/import-documents.d.ts +0 -21
  166. package/dist/tools/import-documents.d.ts.map +0 -1
  167. package/dist/tools/import-documents.js +0 -203
  168. package/dist/tools/import-documents.js.map +0 -1
  169. package/dist/tools/import.d.ts +0 -30
  170. package/dist/tools/import.d.ts.map +0 -1
  171. package/dist/tools/import.js +0 -455
  172. package/dist/tools/import.js.map +0 -1
  173. package/dist/tools/integrations.d.ts +0 -15
  174. package/dist/tools/integrations.d.ts.map +0 -1
  175. package/dist/tools/integrations.js +0 -100
  176. package/dist/tools/integrations.js.map +0 -1
  177. package/dist/tools/licensing.d.ts +0 -40
  178. package/dist/tools/licensing.d.ts.map +0 -1
  179. package/dist/tools/licensing.js +0 -431
  180. package/dist/tools/licensing.js.map +0 -1
  181. package/dist/tools/memory.d.ts +0 -21
  182. package/dist/tools/memory.d.ts.map +0 -1
  183. package/dist/tools/memory.js +0 -116
  184. package/dist/tools/memory.js.map +0 -1
  185. package/dist/tools/metadata.d.ts +0 -15
  186. package/dist/tools/metadata.d.ts.map +0 -1
  187. package/dist/tools/metadata.js +0 -1069
  188. package/dist/tools/metadata.js.map +0 -1
  189. package/dist/tools/multimedia.d.ts +0 -19
  190. package/dist/tools/multimedia.d.ts.map +0 -1
  191. package/dist/tools/multimedia.js +0 -291
  192. package/dist/tools/multimedia.js.map +0 -1
  193. package/dist/tools/notes.d.ts +0 -21
  194. package/dist/tools/notes.d.ts.map +0 -1
  195. package/dist/tools/notes.js +0 -108
  196. package/dist/tools/notes.js.map +0 -1
  197. package/dist/tools/notifications.d.ts +0 -17
  198. package/dist/tools/notifications.d.ts.map +0 -1
  199. package/dist/tools/notifications.js +0 -117
  200. package/dist/tools/notifications.js.map +0 -1
  201. package/dist/tools/projects.d.ts +0 -19
  202. package/dist/tools/projects.d.ts.map +0 -1
  203. package/dist/tools/projects.js +0 -140
  204. package/dist/tools/projects.js.map +0 -1
  205. package/dist/tools/publishers.d.ts +0 -16
  206. package/dist/tools/publishers.d.ts.map +0 -1
  207. package/dist/tools/publishers.js +0 -69
  208. package/dist/tools/publishers.js.map +0 -1
  209. package/dist/tools/purchases.d.ts +0 -15
  210. package/dist/tools/purchases.d.ts.map +0 -1
  211. package/dist/tools/purchases.js +0 -63
  212. package/dist/tools/purchases.js.map +0 -1
  213. package/dist/tools/recovery-hints.d.ts +0 -14
  214. package/dist/tools/recovery-hints.d.ts.map +0 -1
  215. package/dist/tools/recovery-hints.js +0 -277
  216. package/dist/tools/recovery-hints.js.map +0 -1
  217. package/dist/tools/releases.d.ts +0 -18
  218. package/dist/tools/releases.d.ts.map +0 -1
  219. package/dist/tools/releases.js +0 -128
  220. package/dist/tools/releases.js.map +0 -1
  221. package/dist/tools/royalties.d.ts +0 -23
  222. package/dist/tools/royalties.d.ts.map +0 -1
  223. package/dist/tools/royalties.js +0 -257
  224. package/dist/tools/royalties.js.map +0 -1
  225. package/dist/tools/send.d.ts +0 -17
  226. package/dist/tools/send.d.ts.map +0 -1
  227. package/dist/tools/send.js +0 -185
  228. package/dist/tools/send.js.map +0 -1
  229. package/dist/tools/sessions.d.ts +0 -18
  230. package/dist/tools/sessions.d.ts.map +0 -1
  231. package/dist/tools/sessions.js +0 -115
  232. package/dist/tools/sessions.js.map +0 -1
  233. package/dist/tools/settings.d.ts +0 -18
  234. package/dist/tools/settings.d.ts.map +0 -1
  235. package/dist/tools/settings.js +0 -96
  236. package/dist/tools/settings.js.map +0 -1
  237. package/dist/tools/share-links.d.ts +0 -19
  238. package/dist/tools/share-links.d.ts.map +0 -1
  239. package/dist/tools/share-links.js +0 -121
  240. package/dist/tools/share-links.js.map +0 -1
  241. package/dist/tools/split-sheets.d.ts +0 -25
  242. package/dist/tools/split-sheets.d.ts.map +0 -1
  243. package/dist/tools/split-sheets.js +0 -307
  244. package/dist/tools/split-sheets.js.map +0 -1
  245. package/dist/tools/team.d.ts +0 -22
  246. package/dist/tools/team.d.ts.map +0 -1
  247. package/dist/tools/team.js +0 -134
  248. package/dist/tools/team.js.map +0 -1
  249. package/dist/tools/telegram.d.ts +0 -20
  250. package/dist/tools/telegram.d.ts.map +0 -1
  251. package/dist/tools/telegram.js +0 -88
  252. package/dist/tools/telegram.js.map +0 -1
  253. package/dist/tools/uploads.d.ts +0 -17
  254. package/dist/tools/uploads.d.ts.map +0 -1
  255. package/dist/tools/uploads.js +0 -156
  256. package/dist/tools/uploads.js.map +0 -1
@@ -1,307 +0,0 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- import { formatAsText, formatSuccess, formatStructuredList, } from "@withpica/mcp-utils";
3
- export class SplitSheetsTools {
4
- pica;
5
- constructor(pica) {
6
- this.pica = pica;
7
- }
8
- /**
9
- * Get all split sheet and recording split tools
10
- */
11
- getTools() {
12
- return [
13
- {
14
- definition: {
15
- name: "pica_split_sheet_send",
16
- description: "Send a split sheet to all credited writers on a work for review and signature. " +
17
- "Notifies each writer via in-app notification, Telegram (if connected), and email. " +
18
- "The split sheet must already be generated. Writers who are not PICA users get " +
19
- "a collaboration invite email instead.",
20
- inputSchema: {
21
- type: "object",
22
- properties: {
23
- work_id: {
24
- type: "string",
25
- description: "The work ID the split sheet belongs to",
26
- },
27
- split_sheet_id: {
28
- type: "string",
29
- description: "The split sheet ID to send",
30
- },
31
- message: {
32
- type: "string",
33
- description: "Optional custom message to include (default: 'please review and sign the split sheet')",
34
- },
35
- },
36
- required: ["work_id", "split_sheet_id"],
37
- },
38
- },
39
- executor: this.sendSplitSheet.bind(this),
40
- },
41
- {
42
- definition: {
43
- name: "pica_split_sheet_list",
44
- description: "List split sheets for a work. Split sheets document how publishing " +
45
- "royalties are divided among writers and publishers for a composition.",
46
- inputSchema: {
47
- type: "object",
48
- properties: {
49
- work_id: {
50
- type: "string",
51
- description: "The work ID to list split sheets for",
52
- },
53
- },
54
- required: ["work_id"],
55
- },
56
- },
57
- executor: this.listSplitSheets.bind(this),
58
- },
59
- {
60
- definition: {
61
- name: "pica_split_sheet_generate",
62
- description: "Generate a split sheet from a work's credits. This takes the existing " +
63
- "writer credits on a work and creates a formal split sheet document. " +
64
- "Credits must total 100% before generating.",
65
- inputSchema: {
66
- type: "object",
67
- properties: {
68
- work_id: {
69
- type: "string",
70
- description: "The work ID to generate a split sheet for",
71
- },
72
- },
73
- required: ["work_id"],
74
- },
75
- },
76
- executor: this.generateSplitSheet.bind(this),
77
- },
78
- {
79
- definition: {
80
- name: "pica_split_sheet_get",
81
- description: "Get a specific split sheet with its full details including " +
82
- "individual writer shares and signature status.",
83
- inputSchema: {
84
- type: "object",
85
- properties: {
86
- work_id: {
87
- type: "string",
88
- description: "The work ID the split sheet belongs to",
89
- },
90
- split_sheet_id: {
91
- type: "string",
92
- description: "The split sheet ID",
93
- },
94
- },
95
- required: ["work_id", "split_sheet_id"],
96
- },
97
- },
98
- executor: this.getSplitSheet.bind(this),
99
- },
100
- {
101
- definition: {
102
- name: "pica_recording_splits_list",
103
- description: "List ownership splits for a recording. These represent master rights " +
104
- "ownership — who owns what percentage of the recorded performance " +
105
- "(as opposed to the underlying composition).",
106
- inputSchema: {
107
- type: "object",
108
- properties: {
109
- recording_id: {
110
- type: "string",
111
- description: "The recording ID to list splits for",
112
- },
113
- },
114
- required: ["recording_id"],
115
- },
116
- },
117
- executor: this.listRecordingSplits.bind(this),
118
- },
119
- {
120
- definition: {
121
- name: "pica_recording_splits_create",
122
- description: "Set an ownership split on a recording. Assigns a percentage of master " +
123
- "rights ownership to a person or entity for this recording.",
124
- inputSchema: {
125
- type: "object",
126
- properties: {
127
- recording_id: {
128
- type: "string",
129
- description: "The recording ID to add a split to",
130
- },
131
- person_id: {
132
- type: "string",
133
- description: "The person ID who owns this split",
134
- },
135
- split_type: {
136
- type: "string",
137
- enum: ["master", "mechanical", "performance", "sync"],
138
- description: "Type of split: master, mechanical, performance, or sync",
139
- },
140
- role: {
141
- type: "string",
142
- description: "The role of this split holder (e.g. 'performer', 'producer', 'label')",
143
- },
144
- percentage: {
145
- type: "number",
146
- description: "Ownership percentage (0-100)",
147
- },
148
- notes: {
149
- type: "string",
150
- description: "Optional notes about this split",
151
- },
152
- territory: {
153
- type: "string",
154
- description: "Territory for this split (e.g., 'worldwide', 'UK'). Default: worldwide.",
155
- },
156
- start_date: {
157
- type: "string",
158
- description: "When this split starts (ISO date). Null = from inception.",
159
- },
160
- end_date: {
161
- type: "string",
162
- description: "When this split ends (ISO date). Null = perpetual.",
163
- },
164
- },
165
- required: ["recording_id", "split_type", "percentage"],
166
- additionalProperties: true,
167
- },
168
- },
169
- executor: this.createRecordingSplit.bind(this),
170
- },
171
- {
172
- definition: {
173
- name: "pica_recording_splits_verify",
174
- description: "Verify a recording split. Marks a specific ownership split as " +
175
- "confirmed and agreed upon by the relevant parties.",
176
- inputSchema: {
177
- type: "object",
178
- properties: {
179
- recording_id: {
180
- type: "string",
181
- description: "The recording ID",
182
- },
183
- split_id: {
184
- type: "string",
185
- description: "The split ID to verify",
186
- },
187
- },
188
- required: ["recording_id", "split_id"],
189
- },
190
- },
191
- executor: this.verifyRecordingSplit.bind(this),
192
- },
193
- ];
194
- }
195
- // ── Send Split Sheet ─────────────────────────────────────────────────
196
- async sendSplitSheet(args) {
197
- // 1. Verify split sheet exists
198
- const sheet = await this.pica.splitSheets.get(args.work_id, args.split_sheet_id);
199
- if (!sheet) {
200
- return formatAsText({
201
- sent: false,
202
- error: "Split sheet not found",
203
- });
204
- }
205
- // 2. Get all credits on this work to find writers
206
- const creditsResult = await this.pica.credits.listForWork(args.work_id);
207
- const writers = Array.isArray(creditsResult)
208
- ? creditsResult
209
- : creditsResult?.data || [];
210
- if (writers.length === 0) {
211
- return formatAsText({
212
- sent: false,
213
- error: "No credits found on this work. Add writers before sending the split sheet.",
214
- });
215
- }
216
- // 3. Notify each writer
217
- const message = args.message?.trim() ||
218
- "please review and sign the split sheet for this work";
219
- const results = [];
220
- for (const credit of writers) {
221
- if (!credit.person_id)
222
- continue;
223
- try {
224
- const result = await this.pica.notifications.sendToPerson({
225
- person_id: credit.person_id,
226
- message: `${message} — your share: ${credit.splits ?? "?"}%`,
227
- work_id: args.work_id,
228
- notification_type: "split_sheet_review",
229
- });
230
- const data = result.data || result;
231
- results.push({
232
- person_id: credit.person_id,
233
- name: data.person_name || credit.person_name || "Unknown",
234
- delivered: data.delivered,
235
- channels: data.channels,
236
- reason: data.reason,
237
- });
238
- }
239
- catch {
240
- results.push({
241
- person_id: credit.person_id,
242
- name: credit.person_name || "Unknown",
243
- delivered: false,
244
- reason: "notification_failed",
245
- });
246
- }
247
- }
248
- const delivered = results.filter((r) => r.delivered);
249
- const notPicaUsers = results.filter((r) => r.reason === "not_a_pica_user");
250
- const failed = results.filter((r) => !r.delivered && r.reason !== "not_a_pica_user");
251
- const summary = [
252
- `Split sheet sent to ${delivered.length}/${results.length} writers`,
253
- delivered.length > 0
254
- ? `Delivered: ${delivered.map((r) => r.name).join(", ")}`
255
- : null,
256
- notPicaUsers.length > 0
257
- ? `Not PICA users (use pica_collaborators_invite): ${notPicaUsers.map((r) => r.name).join(", ")}`
258
- : null,
259
- failed.length > 0
260
- ? `Failed: ${failed.map((r) => r.name).join(", ")}`
261
- : null,
262
- ]
263
- .filter(Boolean)
264
- .join(". ");
265
- return formatSuccess(summary, {
266
- split_sheet_id: args.split_sheet_id,
267
- work_id: args.work_id,
268
- results,
269
- });
270
- }
271
- // ── Split Sheet Methods ──────────────────────────────────────────────
272
- async listSplitSheets(args) {
273
- const sheets = await this.pica.splitSheets.listForWork(args.work_id);
274
- const data = Array.isArray(sheets) ? sheets : (sheets?.data ?? [sheets]);
275
- return formatStructuredList(data, "split_sheet", {
276
- work_id: args.work_id,
277
- total: data.length,
278
- });
279
- }
280
- async generateSplitSheet(args) {
281
- const sheet = await this.pica.splitSheets.generate(args.work_id);
282
- return formatSuccess("Split sheet generated successfully", sheet);
283
- }
284
- async getSplitSheet(args) {
285
- const sheet = await this.pica.splitSheets.get(args.work_id, args.split_sheet_id);
286
- return formatAsText(sheet);
287
- }
288
- // ── Recording Split Methods ──────────────────────────────────────────
289
- async listRecordingSplits(args) {
290
- const splits = await this.pica.recordingSplits.list(args.recording_id);
291
- const data = Array.isArray(splits) ? splits : (splits?.data ?? [splits]);
292
- return formatStructuredList(data, "recording_split", {
293
- recording_id: args.recording_id,
294
- total: data.length,
295
- });
296
- }
297
- async createRecordingSplit(args) {
298
- const { recording_id, ...data } = args;
299
- const split = await this.pica.recordingSplits.create(recording_id, data);
300
- return formatSuccess("Recording split created successfully", split);
301
- }
302
- async verifyRecordingSplit(args) {
303
- const result = await this.pica.recordingSplits.verify(args.recording_id, args.split_id);
304
- return formatSuccess("Recording split verified successfully", result);
305
- }
306
- }
307
- //# sourceMappingURL=split-sheets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-sheets.js","sourceRoot":"","sources":["../../src/tools/split-sheets.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Team Tools — manage team members via MCP
3
- *
4
- * Backed by REST routes: /api/admin/team/*
5
- * Supports listing, viewing, inviting, updating roles, and removing team members.
6
- */
7
- import { PicaClient } from "@withpica/mcp-sdk";
8
- import { ToolDefinition, ToolExecutor } from "./index.js";
9
- export declare class TeamTools {
10
- private pica;
11
- constructor(pica: PicaClient);
12
- getTools(): Array<{
13
- definition: ToolDefinition;
14
- executor: ToolExecutor;
15
- }>;
16
- private listMembers;
17
- private getMember;
18
- private inviteMember;
19
- private updateRole;
20
- private removeMember;
21
- }
22
- //# sourceMappingURL=team.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,SAAS;IACpB,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,WAAW;YAQX,SAAS;YAKT,YAAY;YAYZ,UAAU;YAUV,YAAY;CAI3B"}
@@ -1,134 +0,0 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- import { formatSuccess, formatStructuredList } from "@withpica/mcp-utils";
3
- export class TeamTools {
4
- pica;
5
- constructor(pica) {
6
- this.pica = pica;
7
- }
8
- getTools() {
9
- return [
10
- {
11
- definition: {
12
- name: "pica_team_list",
13
- description: "List all team members with their roles, status (pending/active), and permissions. Use to answer 'who is on my team?'",
14
- inputSchema: {
15
- type: "object",
16
- properties: {},
17
- },
18
- },
19
- executor: this.listMembers.bind(this),
20
- },
21
- {
22
- definition: {
23
- name: "pica_team_get",
24
- description: "Get details of a specific team member by membership ID, including permissions, status, and activity.",
25
- inputSchema: {
26
- type: "object",
27
- properties: {
28
- id: {
29
- type: "string",
30
- description: "Team membership ID",
31
- },
32
- },
33
- required: ["id"],
34
- },
35
- },
36
- executor: this.getMember.bind(this),
37
- },
38
- {
39
- definition: {
40
- name: "pica_team_invite",
41
- description: "Invite someone to join the team by email. Sends an invitation email. Optionally set their name and permissions.",
42
- inputSchema: {
43
- type: "object",
44
- properties: {
45
- email: {
46
- type: "string",
47
- description: "Email address of the person to invite",
48
- },
49
- full_name: {
50
- type: "string",
51
- description: "Full name of the invitee (optional)",
52
- },
53
- permissions: {
54
- type: "object",
55
- description: "Permission flags for the team member (e.g. { can_edit_works: true, can_manage_team: false })",
56
- },
57
- },
58
- required: ["email"],
59
- },
60
- },
61
- executor: this.inviteMember.bind(this),
62
- },
63
- {
64
- definition: {
65
- name: "pica_team_update_role",
66
- description: "Update a team member's permissions. Pass the membership ID and the new permissions object.",
67
- inputSchema: {
68
- type: "object",
69
- properties: {
70
- id: {
71
- type: "string",
72
- description: "Team membership ID",
73
- },
74
- permissions: {
75
- type: "object",
76
- description: "Updated permission flags (e.g. { can_edit_works: true, can_manage_team: false })",
77
- },
78
- },
79
- required: ["id", "permissions"],
80
- },
81
- },
82
- executor: this.updateRole.bind(this),
83
- },
84
- {
85
- definition: {
86
- name: "pica_team_remove",
87
- description: "Remove a team member by membership ID. This revokes their access.",
88
- inputSchema: {
89
- type: "object",
90
- properties: {
91
- id: {
92
- type: "string",
93
- description: "Team membership ID to remove",
94
- },
95
- },
96
- required: ["id"],
97
- },
98
- },
99
- executor: this.removeMember.bind(this),
100
- },
101
- ];
102
- }
103
- async listMembers(_args) {
104
- const result = await this.pica.team.list();
105
- const members = Array.isArray(result)
106
- ? result
107
- : (result?.data ?? result?.members ?? []);
108
- return formatStructuredList(members, "team member");
109
- }
110
- async getMember(args) {
111
- const member = await this.pica.team.get(args.id);
112
- return formatSuccess("Team member retrieved", member?.data ?? member);
113
- }
114
- async inviteMember(args) {
115
- const payload = { email: args.email };
116
- if (args.full_name)
117
- payload.full_name = args.full_name;
118
- if (args.permissions)
119
- payload.permissions = args.permissions;
120
- const result = await this.pica.team.invite(payload);
121
- return formatSuccess(`Invitation sent to ${args.email}`, result?.data ?? result);
122
- }
123
- async updateRole(args) {
124
- const result = await this.pica.team.update(args.id, {
125
- permissions: args.permissions,
126
- });
127
- return formatSuccess(`Permissions updated for membership ${args.id}`, result?.data ?? result);
128
- }
129
- async removeMember(args) {
130
- await this.pica.team.remove(args.id);
131
- return formatSuccess(`Team member ${args.id} removed`);
132
- }
133
- }
134
- //# sourceMappingURL=team.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAW7D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,OAAO,SAAS;IACZ,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EACT,sHAAsH;oBACxH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,eAAe;oBACrB,WAAW,EACT,sGAAsG;oBACxG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oBAAoB;6BAClC;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACpC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EACT,iHAAiH;oBACnH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,uCAAuC;6BACrD;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qCAAqC;6BACnD;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,8FAA8F;6BACjG;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EACT,4FAA4F;oBAC9F,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oBAAoB;6BAClC;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,kFAAkF;6BACrF;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC;qBAChC;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EACT,mEAAmE;oBACrE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8BAA8B;6BAC5C;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAA0B;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5C,OAAO,oBAAoB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAyB;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,aAAa,CAAC,uBAAuB,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,MAAM,OAAO,GAAwB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACvD,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,aAAa,CAClB,sBAAsB,IAAI,CAAC,KAAK,EAAE,EAClC,MAAM,EAAE,IAAI,IAAI,MAAM,CACvB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE;YAClD,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QACH,OAAO,aAAa,CAClB,sCAAsC,IAAI,CAAC,EAAE,EAAE,EAC/C,MAAM,EAAE,IAAI,IAAI,MAAM,CACvB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC,eAAe,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;CACF"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Telegram Tools — MCP tools for user notification via Telegram
3
- *
4
- * Lets AI agents check if the user has Telegram connected and send them
5
- * notifications for long-running tasks. Agents should check status first,
6
- * then promise "I'll ping you on Telegram when done" if connected.
7
- */
8
- import { PicaClient } from "@withpica/mcp-sdk";
9
- import { ToolDefinition, ToolExecutor } from "./index.js";
10
- export declare class TelegramTools {
11
- private pica;
12
- constructor(pica: PicaClient);
13
- getTools(): Array<{
14
- definition: ToolDefinition;
15
- executor: ToolExecutor;
16
- }>;
17
- private getStatus;
18
- private notifyUser;
19
- }
20
- //# sourceMappingURL=telegram.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,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;YA0C3D,SAAS;YAwBT,UAAU;CA+BzB"}
@@ -1,88 +0,0 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- import { formatAsText, formatSuccess, formatValidationError, } from "@withpica/mcp-utils";
3
- export class TelegramTools {
4
- pica;
5
- constructor(pica) {
6
- this.pica = pica;
7
- }
8
- getTools() {
9
- return [
10
- {
11
- definition: {
12
- name: "pica_telegram_status",
13
- description: "Check if the user has Telegram connected. Use this before promising to send Telegram notifications. " +
14
- "Returns connection status, username, and notification preferences. " +
15
- "If not connected, suggest the user visit /connect to set up Telegram.",
16
- inputSchema: {
17
- type: "object",
18
- properties: {},
19
- },
20
- },
21
- executor: this.getStatus.bind(this),
22
- },
23
- {
24
- definition: {
25
- name: "pica_notify_user",
26
- description: "Send a notification to the user's connected Telegram. Use for long-running tasks: " +
27
- "enrichment, exports, duplicate merges, bulk operations. The message should be concise " +
28
- "and actionable — tell them what finished and what to do next. " +
29
- "Fails gracefully if Telegram is not connected (returns error, does not throw).",
30
- inputSchema: {
31
- type: "object",
32
- properties: {
33
- message: {
34
- type: "string",
35
- description: "Notification message (markdown supported). Keep it short — 1-3 sentences. " +
36
- "Include what completed and any action needed.",
37
- },
38
- },
39
- required: ["message"],
40
- },
41
- },
42
- executor: this.notifyUser.bind(this),
43
- },
44
- ];
45
- }
46
- async getStatus(_args) {
47
- const result = await this.pica.telegram.getStatus();
48
- const data = result.data || result;
49
- if (!data.connected) {
50
- return formatAsText({
51
- connected: false,
52
- message: "Telegram is not connected. The user can set it up at /connect.",
53
- bot_username: data.botUsername,
54
- });
55
- }
56
- return formatSuccess(`Telegram connected as @${data.telegramUsername || data.telegramFirstName}. You can send notifications via pica_notify_user.`, {
57
- connected: true,
58
- telegram_username: data.telegramUsername,
59
- telegram_first_name: data.telegramFirstName,
60
- preferences: data.preferences,
61
- });
62
- }
63
- async notifyUser(args) {
64
- if (!args.message?.trim()) {
65
- return formatValidationError({ message: "message is required" });
66
- }
67
- try {
68
- const result = await this.pica.telegram.sendNotification(args.message.trim());
69
- const data = result.data || result;
70
- return formatSuccess(`Notification sent to @${data.telegramUsername || "user"} on Telegram.`, { sent: true, telegram_username: data.telegramUsername });
71
- }
72
- catch (err) {
73
- // Graceful failure — don't throw, return error text
74
- const message = err?.message || String(err);
75
- if (message.includes("not connected") || message.includes("400")) {
76
- return formatAsText({
77
- sent: false,
78
- error: "Telegram is not connected. The user can set it up at /connect.",
79
- });
80
- }
81
- return formatAsText({
82
- sent: false,
83
- error: `Failed to send notification: ${message}`,
84
- });
85
- }
86
- }
87
- }
88
- //# sourceMappingURL=telegram.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Upload Tools - MCP tools for uploading any file type (images, videos, documents)
3
- * Uses the generic storage presigned upload route that supports all PICA storage providers.
4
- */
5
- import { PicaClient } from "@withpica/mcp-sdk";
6
- import { ToolDefinition, ToolExecutor } from "./index.js";
7
- export declare class UploadTools {
8
- private pica;
9
- constructor(pica: PicaClient);
10
- getTools(): Array<{
11
- definition: ToolDefinition;
12
- executor: ToolExecutor;
13
- }>;
14
- private presignedUpload;
15
- private completeUpload;
16
- }
17
- //# sourceMappingURL=uploads.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../src/tools/uploads.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,WAAW;IACtB,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;YAuH3D,eAAe;YAyBf,cAAc;CAwB7B"}