@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,257 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ import { formatSuccess, formatAsText, } from "@withpica/mcp-utils";
3
+ export class RoyaltiesTools {
4
+ pica;
5
+ constructor(pica) {
6
+ this.pica = pica;
7
+ }
8
+ getTools() {
9
+ return [
10
+ {
11
+ definition: {
12
+ name: "pica_royalties_list",
13
+ description: "List royalty payment records with optional filters. " +
14
+ "Returns individual payment entries from imported statements.",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {
18
+ source: {
19
+ type: "string",
20
+ description: "Filter by payment source: prs, ppl, mcps, ascap, bmi, sesac, " +
21
+ "spotify, apple_music, youtube, distrokid, tunecore, cdbaby, etc.",
22
+ },
23
+ work_id: {
24
+ type: "string",
25
+ description: "Filter by work ID (UUID)",
26
+ },
27
+ from_date: {
28
+ type: "string",
29
+ description: "Filter payments from date (ISO format YYYY-MM-DD)",
30
+ },
31
+ to_date: {
32
+ type: "string",
33
+ description: "Filter payments to date (ISO format YYYY-MM-DD)",
34
+ },
35
+ limit: {
36
+ type: "number",
37
+ description: "Number of results (default 50, max 100)",
38
+ },
39
+ offset: {
40
+ type: "number",
41
+ description: "Pagination offset (default 0)",
42
+ },
43
+ },
44
+ },
45
+ },
46
+ executor: this.listPayments.bind(this),
47
+ },
48
+ {
49
+ definition: {
50
+ name: "pica_royalties_get",
51
+ description: "Get detailed earnings summary with breakdown by source and tax category. " +
52
+ "Includes recent payment records and pagination. " +
53
+ "Use this for questions like 'how much did I earn?' or 'what are my earnings?'.",
54
+ inputSchema: {
55
+ type: "object",
56
+ properties: {
57
+ start_date: {
58
+ type: "string",
59
+ description: "Filter from date (ISO format YYYY-MM-DD)",
60
+ },
61
+ end_date: {
62
+ type: "string",
63
+ description: "Filter to date (ISO format YYYY-MM-DD)",
64
+ },
65
+ source: {
66
+ type: "string",
67
+ description: "Filter by source (prs, ppl, spotify, etc.)",
68
+ },
69
+ limit: {
70
+ type: "number",
71
+ description: "Number of recent payments to return (default 50)",
72
+ },
73
+ },
74
+ },
75
+ },
76
+ executor: this.getEarnings.bind(this),
77
+ },
78
+ {
79
+ definition: {
80
+ name: "pica_royalties_summary",
81
+ description: "Get royalty gap analysis — identifies missing registrations, " +
82
+ "unlinked credits, and payment gaps. Answers questions like " +
83
+ "'what am I missing?' or 'where should I register?'.",
84
+ inputSchema: {
85
+ type: "object",
86
+ properties: {
87
+ priority: {
88
+ type: "string",
89
+ description: "Filter by priority: high, medium, low",
90
+ },
91
+ gap_type: {
92
+ type: "string",
93
+ description: "Filter by gap type: prs_missing, ppl_missing, mcps_missing, " +
94
+ "spotify_missing, isrc_missing, iswc_missing, tunecode_missing, " +
95
+ "payment_missing, credit_unlinked",
96
+ },
97
+ work_id: {
98
+ type: "string",
99
+ description: "Filter gaps for a specific work",
100
+ },
101
+ limit: {
102
+ type: "number",
103
+ description: "Number of gaps to return (default 20)",
104
+ },
105
+ },
106
+ },
107
+ },
108
+ executor: this.getGaps.bind(this),
109
+ },
110
+ {
111
+ definition: {
112
+ name: "pica_statements_list",
113
+ description: "List past statement imports — shows which PRO/NRO statements " +
114
+ "have been imported and when. Supported sources: PRS, PPL, MCPS, " +
115
+ "ASCAP, BMI, SESAC, SoundExchange, SOCAN, APRA.",
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {
119
+ source: {
120
+ type: "string",
121
+ description: "Filter by source (prs, ppl, ascap, etc.)",
122
+ },
123
+ date_from: {
124
+ type: "string",
125
+ description: "Filter imports after this date (ISO format)",
126
+ },
127
+ date_to: {
128
+ type: "string",
129
+ description: "Filter imports before this date (ISO format)",
130
+ },
131
+ search: {
132
+ type: "string",
133
+ description: "Search by filename",
134
+ },
135
+ limit: {
136
+ type: "number",
137
+ description: "Number of results (default 20, max 50)",
138
+ },
139
+ offset: {
140
+ type: "number",
141
+ description: "Pagination offset",
142
+ },
143
+ sort: {
144
+ type: "string",
145
+ description: "Sort order: newest (default) or oldest",
146
+ },
147
+ },
148
+ },
149
+ },
150
+ executor: this.listStatements.bind(this),
151
+ },
152
+ {
153
+ definition: {
154
+ name: "pica_statements_get",
155
+ description: "Get details of a specific statement import batch, including " +
156
+ "line items with per-work/territory breakdowns.",
157
+ inputSchema: {
158
+ type: "object",
159
+ properties: {
160
+ batch_id: {
161
+ type: "string",
162
+ description: "The import batch ID (UUID)",
163
+ },
164
+ limit: {
165
+ type: "number",
166
+ description: "Number of line items to return (default 50, max 100)",
167
+ },
168
+ offset: {
169
+ type: "number",
170
+ description: "Pagination offset for line items",
171
+ },
172
+ },
173
+ required: ["batch_id"],
174
+ },
175
+ },
176
+ executor: this.getStatement.bind(this),
177
+ },
178
+ ];
179
+ }
180
+ async listPayments(args) {
181
+ const data = await this.pica.royalties.payments({
182
+ source: args.source,
183
+ workId: args.work_id,
184
+ fromDate: args.from_date,
185
+ toDate: args.to_date,
186
+ limit: args.limit || 50,
187
+ offset: args.offset || 0,
188
+ });
189
+ const hints = [];
190
+ if (!data?.length) {
191
+ hints.push({
192
+ gap: "no_payments",
193
+ suggestion: "Import a royalty statement to start tracking earnings (upload a PRS/PPL/ASCAP CSV)",
194
+ severity: "important",
195
+ });
196
+ }
197
+ return formatSuccess(`Found ${data?.length || 0} payment records`, data, hints);
198
+ }
199
+ async getEarnings(args) {
200
+ const data = await this.pica.royalties.earnings({
201
+ start_date: args.start_date,
202
+ end_date: args.end_date,
203
+ source: args.source,
204
+ limit: args.limit || 50,
205
+ });
206
+ return formatSuccess("Earnings summary", data);
207
+ }
208
+ async getGaps(args) {
209
+ const data = await this.pica.royalties.gaps({
210
+ priority: args.priority,
211
+ gapType: args.gap_type,
212
+ workId: args.work_id,
213
+ limit: args.limit || 20,
214
+ });
215
+ const hints = [];
216
+ const gaps = Array.isArray(data) ? data : [];
217
+ const prsGaps = gaps.filter((g) => g.gap_type === "prs_missing");
218
+ if (prsGaps.length > 0) {
219
+ hints.push({
220
+ gap: "prs_missing",
221
+ suggestion: `Register ${prsGaps.length} work(s) with PRS (pica_works_inspect with sections: ["registration"])`,
222
+ count: prsGaps.length,
223
+ severity: "critical",
224
+ });
225
+ }
226
+ const isrcGaps = gaps.filter((g) => g.gap_type === "isrc_missing");
227
+ if (isrcGaps.length > 0) {
228
+ hints.push({
229
+ gap: "isrc_missing",
230
+ suggestion: `Add ISRCs to ${isrcGaps.length} recording(s) for royalty tracking`,
231
+ count: isrcGaps.length,
232
+ severity: "important",
233
+ });
234
+ }
235
+ return formatSuccess(`Found ${gaps.length} royalty gaps`, data, hints);
236
+ }
237
+ async listStatements(args) {
238
+ const data = await this.pica.statements.history({
239
+ source: args.source,
240
+ dateFrom: args.date_from,
241
+ dateTo: args.date_to,
242
+ search: args.search,
243
+ limit: args.limit || 20,
244
+ offset: args.offset || 0,
245
+ sort: args.sort,
246
+ });
247
+ return formatSuccess(`Found ${data?.imports?.length || data?.total || 0} statement imports`, data);
248
+ }
249
+ async getStatement(args) {
250
+ if (!args.batch_id) {
251
+ return formatAsText({ error: "batch_id is required" });
252
+ }
253
+ const data = await this.pica.statements.get(args.batch_id);
254
+ return formatSuccess(`Statement batch: ${data?.sourceName || data?.source || "unknown"} — ${data?.lineItemCount || 0} line items`, data);
255
+ }
256
+ }
257
+ //# sourceMappingURL=royalties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"royalties.js","sourceRoot":"","sources":["../../src/tools/royalties.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Uses the chain service for unified fuzzy search with pg_trgm across
5
5
  * works, people, recordings, physical assets, audio files, and work sessions.
6
6
  */
7
- import { PicaClient } from "../pica-sdk.js";
7
+ import { PicaClient } from "@withpica/mcp-sdk";
8
8
  import { ToolDefinition, ToolExecutor } from "./index.js";
9
9
  export declare class SearchTools {
10
10
  private pica;
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,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;IAsEzE;;;OAGG;YACW,SAAS;IASvB;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,aAAa;CAoB5B"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.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,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;IAsEzE;;;OAGG;YACW,SAAS;IASvB;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,aAAa;CAoB5B"}
@@ -1,5 +1,5 @@
1
1
  // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- import { formatAsText, formatSuccess } from "../utils/formatting.js";
2
+ import { formatAsText, formatSuccess } from "@withpica/mcp-utils";
3
3
  export class SearchTools {
4
4
  pica;
5
5
  constructor(pica) {
@@ -12,7 +12,7 @@ export class SearchTools {
12
12
  name: "pica_search_all",
13
13
  description: "Fuzzy search across the entire catalog: works, people, recordings, physical assets, audio files, studio sessions, agreements, multimedia, and releases. " +
14
14
  "Supports free text, ISRC, ISWC, and IPI lookups. Returns ranked results with the top match expanded to full chain detail. " +
15
- "→ then: pica_works_get_full (work details), pica_people_get_full (person details), pica_recordings_get (recording details)",
15
+ "→ then: pica_works_inspect (work details), pica_people_inspect (person details), pica_recordings_inspect (recording details)",
16
16
  inputSchema: {
17
17
  type: "object",
18
18
  properties: {
@@ -52,7 +52,7 @@ export class SearchTools {
52
52
  "Returns the canonical global entity + all connected works, recordings, creators, and publishers across the graph. " +
53
53
  "Also shows which entities exist in your catalog. " +
54
54
  "Use this to answer: 'show me everything connected to this IPI/ISRC/ISWC' or 'what else has this person written?'\n\n" +
55
- "→ then: pica_works_get_full (deep-dive a work), pica_enrich_work (enrich a discovered work)",
55
+ "→ then: pica_works_inspect (deep-dive a work), pica_enrich_work_spotify (enrich a discovered work)",
56
56
  inputSchema: {
57
57
  type: "object",
58
58
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAW7D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,OAAO,WAAW;IACd,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,iBAAiB;oBACvB,WAAW,EACT,0JAA0J;wBAC1J,4HAA4H;wBAC5H,8HAA8H;oBAChI,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,qDAAqD;6BACxD;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wCAAwC;6BACtD;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,SAAS;gCACf,WAAW,EACT,4DAA4D;6BAC/D;yBACF;wBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;qBACpB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACpC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EAAE,uDAAuD;oBACpE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,EAAE;qBACf;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,qBAAqB;oBAC3B,WAAW,EACT,oGAAoG;wBACpG,oHAAoH;wBACpH,mDAAmD;wBACnD,sHAAsH;wBACtH,oGAAoG;oBACtG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,kFAAkF;oCAClF,0EAA0E;6BAC7E;yBACF;wBACD,QAAQ,EAAE,CAAC,YAAY,CAAC;qBACzB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aACxC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,SAAS,CAAC,IAAyB;QAC/C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC1C,CAAC,EAAE,IAAI,CAAC,KAAK;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe,CAC3B,KAA0B;QAE1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC7C,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa,CAAC,IAAyB;QACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAoB,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,YAAY,CAAC;gBAClB,OAAO,EAAE,gEAAgE,IAAI,CAAC,UAAU,qBAAqB,IAAI,CAAC,eAAe,IAAI;gBACrI,IAAI,EAAE,8HAA8H;aACrI,CAAC,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG;YACd,SAAS,IAAI,CAAC,aAAa,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC9D,oBAAoB,IAAI,CAAC,eAAe,EAAE;YAC1C,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,WAAW,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,gBAAgB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,aAAa;YAC7L,oBAAoB,IAAI,CAAC,WAAW,CAAC,KAAK,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,YAAY,IAAI,CAAC,WAAW,CAAC,UAAU,aAAa;SACjI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Send Tools - MCP tools for sending messages, invites, and file requests through PICA's Send Hub
3
+ */
4
+ import { PicaClient } from "@withpica/mcp-sdk";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class SendTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private sendMessage;
14
+ private querySent;
15
+ private resendItem;
16
+ }
17
+ //# sourceMappingURL=send.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/tools/send.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,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;YAqJ3D,WAAW;YAaX,SAAS;YAwBT,UAAU;CAIzB"}
@@ -0,0 +1,185 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ import { formatSuccess, formatList } from "@withpica/mcp-utils";
3
+ export class SendTools {
4
+ pica;
5
+ constructor(pica) {
6
+ this.pica = pica;
7
+ }
8
+ getTools() {
9
+ return [
10
+ {
11
+ definition: {
12
+ name: "pica_send_message",
13
+ description: "Send a message through PICA's Send Hub. Supports portal invites, team invites, " +
14
+ "project invites, file requests, and audio shares. Each send_type requires different fields.",
15
+ inputSchema: {
16
+ type: "object",
17
+ properties: {
18
+ send_type: {
19
+ type: "string",
20
+ description: "Type of message to send",
21
+ enum: [
22
+ "portal_invite",
23
+ "team_invite",
24
+ "project_invite",
25
+ "file_request",
26
+ "audio_share",
27
+ ],
28
+ },
29
+ // Portal invite fields
30
+ person_id: {
31
+ type: "string",
32
+ description: "Person ID to send to (required for portal_invite, optional for file_request/audio_share)",
33
+ },
34
+ email: {
35
+ type: "string",
36
+ description: "Email address (required for portal_invite, team_invite)",
37
+ },
38
+ message: {
39
+ type: "string",
40
+ description: "Optional personal message to include",
41
+ },
42
+ // Team invite fields
43
+ name: {
44
+ type: "string",
45
+ description: "Recipient name (for team_invite)",
46
+ },
47
+ permissions: {
48
+ type: "string",
49
+ description: "Permission level for team_invite (e.g. 'admin', 'editor', 'viewer')",
50
+ },
51
+ // Project invite fields
52
+ project_id: {
53
+ type: "string",
54
+ description: "Project ID (required for project_invite)",
55
+ },
56
+ participant_ids: {
57
+ type: "array",
58
+ items: { type: "string" },
59
+ description: "List of person IDs to invite to the project",
60
+ },
61
+ // File request fields
62
+ title: {
63
+ type: "string",
64
+ description: "Title for file_request",
65
+ },
66
+ recipient_email: {
67
+ type: "string",
68
+ description: "Recipient email for file_request/audio_share",
69
+ },
70
+ recipient_name: {
71
+ type: "string",
72
+ description: "Recipient name for file_request/audio_share",
73
+ },
74
+ // Audio share fields
75
+ work_id: {
76
+ type: "string",
77
+ description: "Work ID (required for audio_share)",
78
+ },
79
+ allow_download: {
80
+ type: "boolean",
81
+ description: "Allow downloading shared audio files",
82
+ },
83
+ },
84
+ required: ["send_type"],
85
+ },
86
+ },
87
+ executor: this.sendMessage.bind(this),
88
+ },
89
+ {
90
+ definition: {
91
+ name: "pica_send_query",
92
+ description: "Query Send Hub items with optional filters. Returns sent messages, " +
93
+ "invites, file requests, and audio shares. Use status='pending' to see items awaiting response.",
94
+ inputSchema: {
95
+ type: "object",
96
+ properties: {
97
+ status: {
98
+ type: "string",
99
+ description: "Filter by status: 'all' for everything, 'sent' for delivered, 'pending' for awaiting response (default: all)",
100
+ enum: ["all", "sent", "pending"],
101
+ },
102
+ type: {
103
+ type: "string",
104
+ description: "Filter by type",
105
+ enum: [
106
+ "portal_invite",
107
+ "team_invite",
108
+ "project_invite",
109
+ "file_request",
110
+ "audio_share",
111
+ ],
112
+ },
113
+ person_id: {
114
+ type: "string",
115
+ description: "Filter by recipient person ID",
116
+ },
117
+ work_id: {
118
+ type: "string",
119
+ description: "Filter by related work ID",
120
+ },
121
+ limit: {
122
+ type: "number",
123
+ description: "Max results (default: 50)",
124
+ },
125
+ },
126
+ },
127
+ },
128
+ executor: this.querySent.bind(this),
129
+ },
130
+ {
131
+ definition: {
132
+ name: "pica_send_resend",
133
+ description: "Resend a Send Hub item (re-send an invite, file request, or audio share).",
134
+ inputSchema: {
135
+ type: "object",
136
+ properties: {
137
+ id: {
138
+ type: "string",
139
+ description: "Send Hub item ID to resend",
140
+ },
141
+ },
142
+ required: ["id"],
143
+ },
144
+ },
145
+ executor: this.resendItem.bind(this),
146
+ },
147
+ ];
148
+ }
149
+ async sendMessage(args) {
150
+ // Remap person_id → recipient_person_id for file_request/audio_share
151
+ if ((args.send_type === "file_request" || args.send_type === "audio_share") &&
152
+ args.person_id &&
153
+ !args.recipient_person_id) {
154
+ args.recipient_person_id = args.person_id;
155
+ }
156
+ const result = await this.pica.send.send(args);
157
+ return formatSuccess(`${args.send_type} sent successfully.`, result);
158
+ }
159
+ async querySent(args) {
160
+ const status = args.status || "all";
161
+ // "pending" delegates to the dedicated pending endpoint
162
+ if (status === "pending") {
163
+ const items = await this.pica.send.listPending();
164
+ return formatList(items, { status: "pending" });
165
+ }
166
+ // "all" or "sent" use the general list endpoint
167
+ const result = await this.pica.send.list({
168
+ type: args.type,
169
+ status: status === "all" ? args.status : status,
170
+ personId: args.person_id,
171
+ workId: args.work_id,
172
+ limit: args.limit,
173
+ });
174
+ return formatList(result.items, {
175
+ total: result.total,
176
+ type: args.type,
177
+ status: args.status,
178
+ });
179
+ }
180
+ async resendItem(args) {
181
+ const result = await this.pica.send.resend(args.id);
182
+ return formatSuccess(`Item ${args.id} resent.`, result);
183
+ }
184
+ }
185
+ //# sourceMappingURL=send.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/tools/send.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAQ7D,OAAO,EAAE,aAAa,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE9E,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,mBAAmB;oBACzB,WAAW,EACT,iFAAiF;wBACjF,6FAA6F;oBAC/F,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,yBAAyB;gCACtC,IAAI,EAAE;oCACJ,eAAe;oCACf,aAAa;oCACb,gBAAgB;oCAChB,cAAc;oCACd,aAAa;iCACd;6BACF;4BACD,uBAAuB;4BACvB,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,0FAA0F;6BAC7F;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,yDAAyD;6BAC5D;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sCAAsC;6BACpD;4BACD,qBAAqB;4BACrB,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,kCAAkC;6BAChD;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,qEAAqE;6BACxE;4BACD,wBAAwB;4BACxB,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,0CAA0C;6BACxD;4BACD,eAAe,EAAE;gCACf,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,6CAA6C;6BAC3D;4BACD,sBAAsB;4BACtB,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wBAAwB;6BACtC;4BACD,eAAe,EAAE;gCACf,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8CAA8C;6BAC5D;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,6CAA6C;6BAC3D;4BACD,qBAAqB;4BACrB,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oCAAoC;6BAClD;4BACD,cAAc,EAAE;gCACd,IAAI,EAAE,SAAS;gCACf,WAAW,EAAE,sCAAsC;6BACpD;yBACF;wBACD,QAAQ,EAAE,CAAC,WAAW,CAAC;qBACxB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,iBAAiB;oBACvB,WAAW,EACT,qEAAqE;wBACrE,gGAAgG;oBAClG,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,MAAM,EAAE;gCACN,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,8GAA8G;gCAChH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;6BACjC;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,gBAAgB;gCAC7B,IAAI,EAAE;oCACJ,eAAe;oCACf,aAAa;oCACb,gBAAgB;oCAChB,cAAc;oCACd,aAAa;iCACd;6BACF;4BACD,SAAS,EAAE;gCACT,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,+BAA+B;6BAC7C;4BACD,OAAO,EAAE;gCACP,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2BAA2B;6BACzC;4BACD,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,2BAA2B;6BACzC;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACpC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,kBAAkB;oBACxB,WAAW,EACT,2EAA2E;oBAC7E,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,4BAA4B;6BAC1C;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAyB;QACjD,qEAAqE;QACrE,IACE,CAAC,IAAI,CAAC,SAAS,KAAK,cAAc,IAAI,IAAI,CAAC,SAAS,KAAK,aAAa,CAAC;YACvE,IAAI,CAAC,SAAS;YACd,CAAC,IAAI,CAAC,mBAAmB,EACzB,CAAC;YACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5C,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAyB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QAEpC,wDAAwD;QACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;QAED,gDAAgD;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;YAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,MAAM,EAAE,IAAI,CAAC,OAAO;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,aAAa,CAAC,QAAQ,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Work Sessions Tools - MCP tools for tracking studio sessions
3
+ */
4
+ import { PicaClient } from "@withpica/mcp-sdk";
5
+ import { ToolDefinition, ToolExecutor } from "./index.js";
6
+ export declare class SessionsTools {
7
+ private pica;
8
+ constructor(pica: PicaClient);
9
+ getTools(): Array<{
10
+ definition: ToolDefinition;
11
+ executor: ToolExecutor;
12
+ }>;
13
+ private listSessions;
14
+ private getSession;
15
+ private createSession;
16
+ private getSessionTypes;
17
+ }
18
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/tools/sessions.ts"],"names":[],"mappings":"AAEA;;GAEG;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;YA0F3D,YAAY;YAQZ,UAAU;YAKV,aAAa;YAWb,eAAe;CAM9B"}