@withpica/mcp-server 2.1.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 (226) hide show
  1. package/README.md +305 -0
  2. package/dist/config.d.ts +34 -0
  3. package/dist/config.d.ts.map +1 -0
  4. package/dist/config.js +33 -0
  5. package/dist/config.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +34 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/pica-sdk.d.ts +1162 -0
  11. package/dist/pica-sdk.d.ts.map +1 -0
  12. package/dist/pica-sdk.js +1371 -0
  13. package/dist/pica-sdk.js.map +1 -0
  14. package/dist/prompts/index.d.ts +78 -0
  15. package/dist/prompts/index.d.ts.map +1 -0
  16. package/dist/prompts/index.js +513 -0
  17. package/dist/prompts/index.js.map +1 -0
  18. package/dist/resources/index.d.ts +64 -0
  19. package/dist/resources/index.d.ts.map +1 -0
  20. package/dist/resources/index.js +310 -0
  21. package/dist/resources/index.js.map +1 -0
  22. package/dist/resources/llms-primer.d.ts +2 -0
  23. package/dist/resources/llms-primer.d.ts.map +1 -0
  24. package/dist/resources/llms-primer.js +67 -0
  25. package/dist/resources/llms-primer.js.map +1 -0
  26. package/dist/server.d.ts +27 -0
  27. package/dist/server.d.ts.map +1 -0
  28. package/dist/server.js +140 -0
  29. package/dist/server.js.map +1 -0
  30. package/dist/tools/agreement-types.d.ts +37 -0
  31. package/dist/tools/agreement-types.d.ts.map +1 -0
  32. package/dist/tools/agreement-types.js +579 -0
  33. package/dist/tools/agreement-types.js.map +1 -0
  34. package/dist/tools/agreements.d.ts +21 -0
  35. package/dist/tools/agreements.d.ts.map +1 -0
  36. package/dist/tools/agreements.js +328 -0
  37. package/dist/tools/agreements.js.map +1 -0
  38. package/dist/tools/analytics.d.ts +20 -0
  39. package/dist/tools/analytics.d.ts.map +1 -0
  40. package/dist/tools/analytics.js +126 -0
  41. package/dist/tools/analytics.js.map +1 -0
  42. package/dist/tools/assets.d.ts +23 -0
  43. package/dist/tools/assets.d.ts.map +1 -0
  44. package/dist/tools/assets.js +220 -0
  45. package/dist/tools/assets.js.map +1 -0
  46. package/dist/tools/audio-files.d.ts +21 -0
  47. package/dist/tools/audio-files.d.ts.map +1 -0
  48. package/dist/tools/audio-files.js +358 -0
  49. package/dist/tools/audio-files.js.map +1 -0
  50. package/dist/tools/bulk.d.ts +16 -0
  51. package/dist/tools/bulk.d.ts.map +1 -0
  52. package/dist/tools/bulk.js +82 -0
  53. package/dist/tools/bulk.js.map +1 -0
  54. package/dist/tools/calendar.d.ts +15 -0
  55. package/dist/tools/calendar.d.ts.map +1 -0
  56. package/dist/tools/calendar.js +69 -0
  57. package/dist/tools/calendar.js.map +1 -0
  58. package/dist/tools/collaborators.d.ts +17 -0
  59. package/dist/tools/collaborators.d.ts.map +1 -0
  60. package/dist/tools/collaborators.js +133 -0
  61. package/dist/tools/collaborators.js.map +1 -0
  62. package/dist/tools/comparisons.d.ts +22 -0
  63. package/dist/tools/comparisons.d.ts.map +1 -0
  64. package/dist/tools/comparisons.js +86 -0
  65. package/dist/tools/comparisons.js.map +1 -0
  66. package/dist/tools/credits.d.ts +17 -0
  67. package/dist/tools/credits.d.ts.map +1 -0
  68. package/dist/tools/credits.js +136 -0
  69. package/dist/tools/credits.js.map +1 -0
  70. package/dist/tools/dashboard.d.ts +20 -0
  71. package/dist/tools/dashboard.d.ts.map +1 -0
  72. package/dist/tools/dashboard.js +156 -0
  73. package/dist/tools/dashboard.js.map +1 -0
  74. package/dist/tools/directory.d.ts +15 -0
  75. package/dist/tools/directory.d.ts.map +1 -0
  76. package/dist/tools/directory.js +108 -0
  77. package/dist/tools/directory.js.map +1 -0
  78. package/dist/tools/disputes.d.ts +18 -0
  79. package/dist/tools/disputes.d.ts.map +1 -0
  80. package/dist/tools/disputes.js +66 -0
  81. package/dist/tools/disputes.js.map +1 -0
  82. package/dist/tools/documents.d.ts +15 -0
  83. package/dist/tools/documents.d.ts.map +1 -0
  84. package/dist/tools/documents.js +38 -0
  85. package/dist/tools/documents.js.map +1 -0
  86. package/dist/tools/duplicates.d.ts +16 -0
  87. package/dist/tools/duplicates.d.ts.map +1 -0
  88. package/dist/tools/duplicates.js +72 -0
  89. package/dist/tools/duplicates.js.map +1 -0
  90. package/dist/tools/enrichment.d.ts +23 -0
  91. package/dist/tools/enrichment.d.ts.map +1 -0
  92. package/dist/tools/enrichment.js +207 -0
  93. package/dist/tools/enrichment.js.map +1 -0
  94. package/dist/tools/exports.d.ts +19 -0
  95. package/dist/tools/exports.d.ts.map +1 -0
  96. package/dist/tools/exports.js +155 -0
  97. package/dist/tools/exports.js.map +1 -0
  98. package/dist/tools/health.d.ts +17 -0
  99. package/dist/tools/health.d.ts.map +1 -0
  100. package/dist/tools/health.js +69 -0
  101. package/dist/tools/health.js.map +1 -0
  102. package/dist/tools/import-documents.d.ts +21 -0
  103. package/dist/tools/import-documents.d.ts.map +1 -0
  104. package/dist/tools/import-documents.js +191 -0
  105. package/dist/tools/import-documents.js.map +1 -0
  106. package/dist/tools/import.d.ts +29 -0
  107. package/dist/tools/import.d.ts.map +1 -0
  108. package/dist/tools/import.js +404 -0
  109. package/dist/tools/import.js.map +1 -0
  110. package/dist/tools/index.d.ts +48 -0
  111. package/dist/tools/index.d.ts.map +1 -0
  112. package/dist/tools/index.js +394 -0
  113. package/dist/tools/index.js.map +1 -0
  114. package/dist/tools/integrations.d.ts +15 -0
  115. package/dist/tools/integrations.d.ts.map +1 -0
  116. package/dist/tools/integrations.js +102 -0
  117. package/dist/tools/integrations.js.map +1 -0
  118. package/dist/tools/licensing.d.ts +40 -0
  119. package/dist/tools/licensing.d.ts.map +1 -0
  120. package/dist/tools/licensing.js +436 -0
  121. package/dist/tools/licensing.js.map +1 -0
  122. package/dist/tools/memory.d.ts +21 -0
  123. package/dist/tools/memory.d.ts.map +1 -0
  124. package/dist/tools/memory.js +121 -0
  125. package/dist/tools/memory.js.map +1 -0
  126. package/dist/tools/multimedia.d.ts +19 -0
  127. package/dist/tools/multimedia.d.ts.map +1 -0
  128. package/dist/tools/multimedia.js +293 -0
  129. package/dist/tools/multimedia.js.map +1 -0
  130. package/dist/tools/notes.d.ts +21 -0
  131. package/dist/tools/notes.d.ts.map +1 -0
  132. package/dist/tools/notes.js +126 -0
  133. package/dist/tools/notes.js.map +1 -0
  134. package/dist/tools/notifications.d.ts +17 -0
  135. package/dist/tools/notifications.d.ts.map +1 -0
  136. package/dist/tools/notifications.js +117 -0
  137. package/dist/tools/notifications.js.map +1 -0
  138. package/dist/tools/people.d.ts +53 -0
  139. package/dist/tools/people.d.ts.map +1 -0
  140. package/dist/tools/people.js +534 -0
  141. package/dist/tools/people.js.map +1 -0
  142. package/dist/tools/pica-score.d.ts +15 -0
  143. package/dist/tools/pica-score.d.ts.map +1 -0
  144. package/dist/tools/pica-score.js +30 -0
  145. package/dist/tools/pica-score.js.map +1 -0
  146. package/dist/tools/projects.d.ts +19 -0
  147. package/dist/tools/projects.d.ts.map +1 -0
  148. package/dist/tools/projects.js +142 -0
  149. package/dist/tools/projects.js.map +1 -0
  150. package/dist/tools/purchases.d.ts +15 -0
  151. package/dist/tools/purchases.d.ts.map +1 -0
  152. package/dist/tools/purchases.js +65 -0
  153. package/dist/tools/purchases.js.map +1 -0
  154. package/dist/tools/recordings.d.ts +41 -0
  155. package/dist/tools/recordings.d.ts.map +1 -0
  156. package/dist/tools/recordings.js +293 -0
  157. package/dist/tools/recordings.js.map +1 -0
  158. package/dist/tools/registration.d.ts +16 -0
  159. package/dist/tools/registration.d.ts.map +1 -0
  160. package/dist/tools/registration.js +52 -0
  161. package/dist/tools/registration.js.map +1 -0
  162. package/dist/tools/releases.d.ts +18 -0
  163. package/dist/tools/releases.d.ts.map +1 -0
  164. package/dist/tools/releases.js +138 -0
  165. package/dist/tools/releases.js.map +1 -0
  166. package/dist/tools/royalties.d.ts +23 -0
  167. package/dist/tools/royalties.d.ts.map +1 -0
  168. package/dist/tools/royalties.js +263 -0
  169. package/dist/tools/royalties.js.map +1 -0
  170. package/dist/tools/search.d.ts +30 -0
  171. package/dist/tools/search.d.ts.map +1 -0
  172. package/dist/tools/search.js +117 -0
  173. package/dist/tools/search.js.map +1 -0
  174. package/dist/tools/send.d.ts +18 -0
  175. package/dist/tools/send.d.ts.map +1 -0
  176. package/dist/tools/send.js +189 -0
  177. package/dist/tools/send.js.map +1 -0
  178. package/dist/tools/sessions.d.ts +18 -0
  179. package/dist/tools/sessions.d.ts.map +1 -0
  180. package/dist/tools/sessions.js +107 -0
  181. package/dist/tools/sessions.js.map +1 -0
  182. package/dist/tools/settings.d.ts +18 -0
  183. package/dist/tools/settings.d.ts.map +1 -0
  184. package/dist/tools/settings.js +98 -0
  185. package/dist/tools/settings.js.map +1 -0
  186. package/dist/tools/share-links.d.ts +19 -0
  187. package/dist/tools/share-links.d.ts.map +1 -0
  188. package/dist/tools/share-links.js +126 -0
  189. package/dist/tools/share-links.js.map +1 -0
  190. package/dist/tools/split-sheets.d.ts +24 -0
  191. package/dist/tools/split-sheets.d.ts.map +1 -0
  192. package/dist/tools/split-sheets.js +189 -0
  193. package/dist/tools/split-sheets.js.map +1 -0
  194. package/dist/tools/team.d.ts +22 -0
  195. package/dist/tools/team.d.ts.map +1 -0
  196. package/dist/tools/team.js +139 -0
  197. package/dist/tools/team.js.map +1 -0
  198. package/dist/tools/telegram.d.ts +20 -0
  199. package/dist/tools/telegram.d.ts.map +1 -0
  200. package/dist/tools/telegram.js +94 -0
  201. package/dist/tools/telegram.js.map +1 -0
  202. package/dist/tools/uploads.d.ts +17 -0
  203. package/dist/tools/uploads.d.ts.map +1 -0
  204. package/dist/tools/uploads.js +159 -0
  205. package/dist/tools/uploads.js.map +1 -0
  206. package/dist/tools/works.d.ts +53 -0
  207. package/dist/tools/works.d.ts.map +1 -0
  208. package/dist/tools/works.js +517 -0
  209. package/dist/tools/works.js.map +1 -0
  210. package/dist/utils/credit-gate.d.ts +17 -0
  211. package/dist/utils/credit-gate.d.ts.map +1 -0
  212. package/dist/utils/credit-gate.js +111 -0
  213. package/dist/utils/credit-gate.js.map +1 -0
  214. package/dist/utils/errors.d.ts +29 -0
  215. package/dist/utils/errors.d.ts.map +1 -0
  216. package/dist/utils/errors.js +114 -0
  217. package/dist/utils/errors.js.map +1 -0
  218. package/dist/utils/formatting.d.ts +63 -0
  219. package/dist/utils/formatting.d.ts.map +1 -0
  220. package/dist/utils/formatting.js +130 -0
  221. package/dist/utils/formatting.js.map +1 -0
  222. package/dist/utils/mpp.d.ts +78 -0
  223. package/dist/utils/mpp.d.ts.map +1 -0
  224. package/dist/utils/mpp.js +136 -0
  225. package/dist/utils/mpp.js.map +1 -0
  226. package/package.json +44 -0
@@ -0,0 +1,189 @@
1
+ /**
2
+ * Split Sheets & Recording Splits Tools
3
+ * MCP tools for managing publishing split sheets and master recording ownership splits
4
+ */
5
+ import { formatAsText, formatSuccess, formatStructuredList, } from "../utils/formatting.js";
6
+ export class SplitSheetsTools {
7
+ pica;
8
+ constructor(pica) {
9
+ this.pica = pica;
10
+ }
11
+ /**
12
+ * Get all split sheet and recording split tools
13
+ */
14
+ getTools() {
15
+ return [
16
+ {
17
+ definition: {
18
+ name: "pica_split_sheet_list",
19
+ description: "List split sheets for a work. Split sheets document how publishing " +
20
+ "royalties are divided among writers and publishers for a composition.",
21
+ inputSchema: {
22
+ type: "object",
23
+ properties: {
24
+ work_id: {
25
+ type: "string",
26
+ description: "The work ID to list split sheets for",
27
+ },
28
+ },
29
+ required: ["work_id"],
30
+ },
31
+ },
32
+ executor: this.listSplitSheets.bind(this),
33
+ },
34
+ {
35
+ definition: {
36
+ name: "pica_split_sheet_generate",
37
+ description: "Generate a split sheet from a work's credits. This takes the existing " +
38
+ "writer credits on a work and creates a formal split sheet document. " +
39
+ "Credits must total 100% before generating.",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {
43
+ work_id: {
44
+ type: "string",
45
+ description: "The work ID to generate a split sheet for",
46
+ },
47
+ },
48
+ required: ["work_id"],
49
+ },
50
+ },
51
+ executor: this.generateSplitSheet.bind(this),
52
+ },
53
+ {
54
+ definition: {
55
+ name: "pica_split_sheet_get",
56
+ description: "Get a specific split sheet with its full details including " +
57
+ "individual writer shares and signature status.",
58
+ inputSchema: {
59
+ type: "object",
60
+ properties: {
61
+ work_id: {
62
+ type: "string",
63
+ description: "The work ID the split sheet belongs to",
64
+ },
65
+ split_sheet_id: {
66
+ type: "string",
67
+ description: "The split sheet ID",
68
+ },
69
+ },
70
+ required: ["work_id", "split_sheet_id"],
71
+ },
72
+ },
73
+ executor: this.getSplitSheet.bind(this),
74
+ },
75
+ {
76
+ definition: {
77
+ name: "pica_recording_splits_list",
78
+ description: "List ownership splits for a recording. These represent master rights " +
79
+ "ownership — who owns what percentage of the recorded performance " +
80
+ "(as opposed to the underlying composition).",
81
+ inputSchema: {
82
+ type: "object",
83
+ properties: {
84
+ recording_id: {
85
+ type: "string",
86
+ description: "The recording ID to list splits for",
87
+ },
88
+ },
89
+ required: ["recording_id"],
90
+ },
91
+ },
92
+ executor: this.listRecordingSplits.bind(this),
93
+ },
94
+ {
95
+ definition: {
96
+ name: "pica_recording_splits_create",
97
+ description: "Set an ownership split on a recording. Assigns a percentage of master " +
98
+ "rights ownership to a person or entity for this recording.",
99
+ inputSchema: {
100
+ type: "object",
101
+ properties: {
102
+ recording_id: {
103
+ type: "string",
104
+ description: "The recording ID to add a split to",
105
+ },
106
+ person_id: {
107
+ type: "string",
108
+ description: "The person ID who owns this split",
109
+ },
110
+ role: {
111
+ type: "string",
112
+ description: "The role of this split holder (e.g. 'performer', 'producer', 'label')",
113
+ },
114
+ percentage: {
115
+ type: "number",
116
+ description: "Ownership percentage (0-100)",
117
+ },
118
+ notes: {
119
+ type: "string",
120
+ description: "Optional notes about this split",
121
+ },
122
+ },
123
+ required: ["recording_id"],
124
+ additionalProperties: true,
125
+ },
126
+ },
127
+ executor: this.createRecordingSplit.bind(this),
128
+ },
129
+ {
130
+ definition: {
131
+ name: "pica_recording_splits_verify",
132
+ description: "Verify a recording split. Marks a specific ownership split as " +
133
+ "confirmed and agreed upon by the relevant parties.",
134
+ inputSchema: {
135
+ type: "object",
136
+ properties: {
137
+ recording_id: {
138
+ type: "string",
139
+ description: "The recording ID",
140
+ },
141
+ split_id: {
142
+ type: "string",
143
+ description: "The split ID to verify",
144
+ },
145
+ },
146
+ required: ["recording_id", "split_id"],
147
+ },
148
+ },
149
+ executor: this.verifyRecordingSplit.bind(this),
150
+ },
151
+ ];
152
+ }
153
+ // ── Split Sheet Methods ──────────────────────────────────────────────
154
+ async listSplitSheets(args) {
155
+ const sheets = await this.pica.splitSheets.listForWork(args.work_id);
156
+ const data = Array.isArray(sheets) ? sheets : (sheets?.data ?? [sheets]);
157
+ return formatStructuredList(data, "split_sheet", {
158
+ work_id: args.work_id,
159
+ total: data.length,
160
+ });
161
+ }
162
+ async generateSplitSheet(args) {
163
+ const sheet = await this.pica.splitSheets.generate(args.work_id);
164
+ return formatSuccess("Split sheet generated successfully", sheet);
165
+ }
166
+ async getSplitSheet(args) {
167
+ const sheet = await this.pica.splitSheets.get(args.work_id, args.split_sheet_id);
168
+ return formatAsText(sheet);
169
+ }
170
+ // ── Recording Split Methods ──────────────────────────────────────────
171
+ async listRecordingSplits(args) {
172
+ const splits = await this.pica.recordingSplits.list(args.recording_id);
173
+ const data = Array.isArray(splits) ? splits : (splits?.data ?? [splits]);
174
+ return formatStructuredList(data, "recording_split", {
175
+ recording_id: args.recording_id,
176
+ total: data.length,
177
+ });
178
+ }
179
+ async createRecordingSplit(args) {
180
+ const { recording_id, ...data } = args;
181
+ const split = await this.pica.recordingSplits.create(recording_id, data);
182
+ return formatSuccess("Recording split created successfully", split);
183
+ }
184
+ async verifyRecordingSplit(args) {
185
+ const result = await this.pica.recordingSplits.verify(args.recording_id, args.split_id);
186
+ return formatSuccess("Recording split verified successfully", result);
187
+ }
188
+ }
189
+ //# sourceMappingURL=split-sheets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-sheets.js","sourceRoot":"","sources":["../../src/tools/split-sheets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
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 "../pica-sdk.js";
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,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"}
@@ -0,0 +1,139 @@
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 { formatSuccess, formatStructuredList } from "../utils/formatting.js";
8
+ export class TeamTools {
9
+ pica;
10
+ constructor(pica) {
11
+ this.pica = pica;
12
+ }
13
+ getTools() {
14
+ return [
15
+ {
16
+ definition: {
17
+ name: "pica_team_list",
18
+ description: "List all team members with their roles, status (pending/active), and permissions. Use to answer 'who is on my team?'",
19
+ inputSchema: {
20
+ type: "object",
21
+ properties: {},
22
+ },
23
+ },
24
+ executor: this.listMembers.bind(this),
25
+ },
26
+ {
27
+ definition: {
28
+ name: "pica_team_get",
29
+ description: "Get details of a specific team member by membership ID, including permissions, status, and activity.",
30
+ inputSchema: {
31
+ type: "object",
32
+ properties: {
33
+ id: {
34
+ type: "string",
35
+ description: "Team membership ID",
36
+ },
37
+ },
38
+ required: ["id"],
39
+ },
40
+ },
41
+ executor: this.getMember.bind(this),
42
+ },
43
+ {
44
+ definition: {
45
+ name: "pica_team_invite",
46
+ description: "Invite someone to join the team by email. Sends an invitation email. Optionally set their name and permissions.",
47
+ inputSchema: {
48
+ type: "object",
49
+ properties: {
50
+ email: {
51
+ type: "string",
52
+ description: "Email address of the person to invite",
53
+ },
54
+ full_name: {
55
+ type: "string",
56
+ description: "Full name of the invitee (optional)",
57
+ },
58
+ permissions: {
59
+ type: "object",
60
+ description: "Permission flags for the team member (e.g. { can_edit_works: true, can_manage_team: false })",
61
+ },
62
+ },
63
+ required: ["email"],
64
+ },
65
+ },
66
+ executor: this.inviteMember.bind(this),
67
+ },
68
+ {
69
+ definition: {
70
+ name: "pica_team_update_role",
71
+ description: "Update a team member's permissions. Pass the membership ID and the new permissions object.",
72
+ inputSchema: {
73
+ type: "object",
74
+ properties: {
75
+ id: {
76
+ type: "string",
77
+ description: "Team membership ID",
78
+ },
79
+ permissions: {
80
+ type: "object",
81
+ description: "Updated permission flags (e.g. { can_edit_works: true, can_manage_team: false })",
82
+ },
83
+ },
84
+ required: ["id", "permissions"],
85
+ },
86
+ },
87
+ executor: this.updateRole.bind(this),
88
+ },
89
+ {
90
+ definition: {
91
+ name: "pica_team_remove",
92
+ description: "Remove a team member by membership ID. This revokes their access.",
93
+ inputSchema: {
94
+ type: "object",
95
+ properties: {
96
+ id: {
97
+ type: "string",
98
+ description: "Team membership ID to remove",
99
+ },
100
+ },
101
+ required: ["id"],
102
+ },
103
+ },
104
+ executor: this.removeMember.bind(this),
105
+ },
106
+ ];
107
+ }
108
+ async listMembers(_args) {
109
+ const result = await this.pica.team.list();
110
+ const members = Array.isArray(result)
111
+ ? result
112
+ : (result?.data ?? result?.members ?? []);
113
+ return formatStructuredList(members, "team member");
114
+ }
115
+ async getMember(args) {
116
+ const member = await this.pica.team.get(args.id);
117
+ return formatSuccess("Team member retrieved", member?.data ?? member);
118
+ }
119
+ async inviteMember(args) {
120
+ const payload = { email: args.email };
121
+ if (args.full_name)
122
+ payload.full_name = args.full_name;
123
+ if (args.permissions)
124
+ payload.permissions = args.permissions;
125
+ const result = await this.pica.team.invite(payload);
126
+ return formatSuccess(`Invitation sent to ${args.email}`, result?.data ?? result);
127
+ }
128
+ async updateRole(args) {
129
+ const result = await this.pica.team.update(args.id, {
130
+ permissions: args.permissions,
131
+ });
132
+ return formatSuccess(`Permissions updated for membership ${args.id}`, result?.data ?? result);
133
+ }
134
+ async removeMember(args) {
135
+ await this.pica.team.remove(args.id);
136
+ return formatSuccess(`Team member ${args.id} removed`);
137
+ }
138
+ }
139
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
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 "../pica-sdk.js";
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,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"}
@@ -0,0 +1,94 @@
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 { formatAsText, formatSuccess, formatValidationError, } from "../utils/formatting.js";
9
+ export class TelegramTools {
10
+ pica;
11
+ constructor(pica) {
12
+ this.pica = pica;
13
+ }
14
+ getTools() {
15
+ return [
16
+ {
17
+ definition: {
18
+ name: "pica_telegram_status",
19
+ description: "Check if the user has Telegram connected. Use this before promising to send Telegram notifications. " +
20
+ "Returns connection status, username, and notification preferences. " +
21
+ "If not connected, suggest the user visit /connect to set up Telegram.",
22
+ inputSchema: {
23
+ type: "object",
24
+ properties: {},
25
+ },
26
+ },
27
+ executor: this.getStatus.bind(this),
28
+ },
29
+ {
30
+ definition: {
31
+ name: "pica_notify_user",
32
+ description: "Send a notification to the user's connected Telegram. Use for long-running tasks: " +
33
+ "enrichment, exports, duplicate merges, bulk operations. The message should be concise " +
34
+ "and actionable — tell them what finished and what to do next. " +
35
+ "Fails gracefully if Telegram is not connected (returns error, does not throw).",
36
+ inputSchema: {
37
+ type: "object",
38
+ properties: {
39
+ message: {
40
+ type: "string",
41
+ description: "Notification message (markdown supported). Keep it short — 1-3 sentences. " +
42
+ "Include what completed and any action needed.",
43
+ },
44
+ },
45
+ required: ["message"],
46
+ },
47
+ },
48
+ executor: this.notifyUser.bind(this),
49
+ },
50
+ ];
51
+ }
52
+ async getStatus(_args) {
53
+ const result = await this.pica.telegram.getStatus();
54
+ const data = result.data || result;
55
+ if (!data.connected) {
56
+ return formatAsText({
57
+ connected: false,
58
+ message: "Telegram is not connected. The user can set it up at /connect.",
59
+ bot_username: data.botUsername,
60
+ });
61
+ }
62
+ return formatSuccess(`Telegram connected as @${data.telegramUsername || data.telegramFirstName}. You can send notifications via pica_notify_user.`, {
63
+ connected: true,
64
+ telegram_username: data.telegramUsername,
65
+ telegram_first_name: data.telegramFirstName,
66
+ preferences: data.preferences,
67
+ });
68
+ }
69
+ async notifyUser(args) {
70
+ if (!args.message?.trim()) {
71
+ return formatValidationError({ message: "message is required" });
72
+ }
73
+ try {
74
+ const result = await this.pica.telegram.sendNotification(args.message.trim());
75
+ const data = result.data || result;
76
+ return formatSuccess(`Notification sent to @${data.telegramUsername || "user"} on Telegram.`, { sent: true, telegram_username: data.telegramUsername });
77
+ }
78
+ catch (err) {
79
+ // Graceful failure — don't throw, return error text
80
+ const message = err?.message || String(err);
81
+ if (message.includes("not connected") || message.includes("400")) {
82
+ return formatAsText({
83
+ sent: false,
84
+ error: "Telegram is not connected. The user can set it up at /connect.",
85
+ });
86
+ }
87
+ return formatAsText({
88
+ sent: false,
89
+ error: `Failed to send notification: ${message}`,
90
+ });
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=telegram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
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 "../pica-sdk.js";
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../src/tools/uploads.ts"],"names":[],"mappings":"AAAA;;;GAGG;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;YAuH3D,eAAe;YAyBf,cAAc;CAwB7B"}