@withpica/mcp-server 2.5.4 → 2.6.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 (269) hide show
  1. package/dist/apps/download.d.ts +2 -0
  2. package/dist/apps/download.d.ts.map +1 -0
  3. package/dist/apps/download.js +125 -0
  4. package/dist/apps/download.js.map +1 -0
  5. package/dist/apps/shared.d.ts +11 -0
  6. package/dist/apps/shared.d.ts.map +1 -1
  7. package/dist/apps/shared.js +212 -0
  8. package/dist/apps/shared.js.map +1 -1
  9. package/dist/apps/upload.d.ts +2 -0
  10. package/dist/apps/upload.d.ts.map +1 -0
  11. package/dist/apps/upload.js +280 -0
  12. package/dist/apps/upload.js.map +1 -0
  13. package/dist/config.d.ts +1 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +6 -1
  16. package/dist/config.js.map +1 -1
  17. package/dist/resources/index.d.ts +1 -1
  18. package/dist/resources/index.d.ts.map +1 -1
  19. package/dist/resources/index.js +39 -8
  20. package/dist/resources/index.js.map +1 -1
  21. package/dist/server.d.ts.map +1 -1
  22. package/dist/server.js +18 -6
  23. package/dist/server.js.map +1 -1
  24. package/dist/tools/agreement-types.d.ts +1 -1
  25. package/dist/tools/agreement-types.d.ts.map +1 -1
  26. package/dist/tools/agreement-types.js +2 -2
  27. package/dist/tools/agreement-types.js.map +1 -1
  28. package/dist/tools/agreements.d.ts +1 -1
  29. package/dist/tools/agreements.d.ts.map +1 -1
  30. package/dist/tools/agreements.js +2 -2
  31. package/dist/tools/agreements.js.map +1 -1
  32. package/dist/tools/analytics.d.ts +1 -1
  33. package/dist/tools/analytics.d.ts.map +1 -1
  34. package/dist/tools/analytics.js +1 -1
  35. package/dist/tools/analytics.js.map +1 -1
  36. package/dist/tools/app-tools.d.ts +8 -5
  37. package/dist/tools/app-tools.d.ts.map +1 -1
  38. package/dist/tools/app-tools.js +215 -54
  39. package/dist/tools/app-tools.js.map +1 -1
  40. package/dist/tools/assets.d.ts +1 -1
  41. package/dist/tools/assets.d.ts.map +1 -1
  42. package/dist/tools/assets.js +215 -14
  43. package/dist/tools/assets.js.map +1 -1
  44. package/dist/tools/audio-files.d.ts +1 -1
  45. package/dist/tools/audio-files.d.ts.map +1 -1
  46. package/dist/tools/audio-files.js +2 -2
  47. package/dist/tools/audio-files.js.map +1 -1
  48. package/dist/tools/auth.d.ts.map +1 -1
  49. package/dist/tools/auth.js +8 -3
  50. package/dist/tools/auth.js.map +1 -1
  51. package/dist/tools/bulk.d.ts +1 -1
  52. package/dist/tools/bulk.d.ts.map +1 -1
  53. package/dist/tools/bulk.js +1 -1
  54. package/dist/tools/bulk.js.map +1 -1
  55. package/dist/tools/calendar.d.ts +1 -1
  56. package/dist/tools/calendar.d.ts.map +1 -1
  57. package/dist/tools/calendar.js +1 -1
  58. package/dist/tools/calendar.js.map +1 -1
  59. package/dist/tools/collaborators.d.ts +1 -1
  60. package/dist/tools/collaborators.d.ts.map +1 -1
  61. package/dist/tools/collaborators.js +1 -1
  62. package/dist/tools/collaborators.js.map +1 -1
  63. package/dist/tools/comparisons.d.ts +1 -1
  64. package/dist/tools/comparisons.d.ts.map +1 -1
  65. package/dist/tools/comparisons.js +1 -1
  66. package/dist/tools/comparisons.js.map +1 -1
  67. package/dist/tools/credits.d.ts +1 -1
  68. package/dist/tools/credits.d.ts.map +1 -1
  69. package/dist/tools/credits.js +2 -2
  70. package/dist/tools/credits.js.map +1 -1
  71. package/dist/tools/dashboard.d.ts +1 -1
  72. package/dist/tools/dashboard.d.ts.map +1 -1
  73. package/dist/tools/dashboard.js +1 -1
  74. package/dist/tools/dashboard.js.map +1 -1
  75. package/dist/tools/directory.d.ts +1 -1
  76. package/dist/tools/directory.d.ts.map +1 -1
  77. package/dist/tools/directory.js +1 -1
  78. package/dist/tools/directory.js.map +1 -1
  79. package/dist/tools/discovery.d.ts +28 -0
  80. package/dist/tools/discovery.d.ts.map +1 -0
  81. package/dist/tools/discovery.js +560 -0
  82. package/dist/tools/discovery.js.map +1 -0
  83. package/dist/tools/disputes.d.ts +1 -1
  84. package/dist/tools/disputes.d.ts.map +1 -1
  85. package/dist/tools/disputes.js +1 -1
  86. package/dist/tools/disputes.js.map +1 -1
  87. package/dist/tools/documents.d.ts +1 -1
  88. package/dist/tools/documents.d.ts.map +1 -1
  89. package/dist/tools/documents.js +1 -1
  90. package/dist/tools/documents.js.map +1 -1
  91. package/dist/tools/duplicates.d.ts +1 -1
  92. package/dist/tools/duplicates.d.ts.map +1 -1
  93. package/dist/tools/duplicates.js +5 -3
  94. package/dist/tools/duplicates.js.map +1 -1
  95. package/dist/tools/enrichment.d.ts +1 -1
  96. package/dist/tools/enrichment.d.ts.map +1 -1
  97. package/dist/tools/enrichment.js +3 -3
  98. package/dist/tools/enrichment.js.map +1 -1
  99. package/dist/tools/exports.d.ts +1 -1
  100. package/dist/tools/exports.d.ts.map +1 -1
  101. package/dist/tools/exports.js +2 -2
  102. package/dist/tools/exports.js.map +1 -1
  103. package/dist/tools/import-documents.d.ts +1 -1
  104. package/dist/tools/import-documents.d.ts.map +1 -1
  105. package/dist/tools/import-documents.js +1 -1
  106. package/dist/tools/import-documents.js.map +1 -1
  107. package/dist/tools/import.d.ts +1 -1
  108. package/dist/tools/import.d.ts.map +1 -1
  109. package/dist/tools/import.js +1 -1
  110. package/dist/tools/import.js.map +1 -1
  111. package/dist/tools/index.d.ts +8 -4
  112. package/dist/tools/index.d.ts.map +1 -1
  113. package/dist/tools/index.js +43 -16
  114. package/dist/tools/index.js.map +1 -1
  115. package/dist/tools/integrations.d.ts +1 -1
  116. package/dist/tools/integrations.d.ts.map +1 -1
  117. package/dist/tools/integrations.js +1 -1
  118. package/dist/tools/integrations.js.map +1 -1
  119. package/dist/tools/licensing.d.ts +1 -1
  120. package/dist/tools/licensing.d.ts.map +1 -1
  121. package/dist/tools/licensing.js +1 -1
  122. package/dist/tools/licensing.js.map +1 -1
  123. package/dist/tools/memory.d.ts +1 -1
  124. package/dist/tools/memory.d.ts.map +1 -1
  125. package/dist/tools/memory.js +1 -1
  126. package/dist/tools/memory.js.map +1 -1
  127. package/dist/tools/metadata.d.ts.map +1 -1
  128. package/dist/tools/metadata.js +15 -3
  129. package/dist/tools/metadata.js.map +1 -1
  130. package/dist/tools/multimedia.d.ts +1 -1
  131. package/dist/tools/multimedia.d.ts.map +1 -1
  132. package/dist/tools/multimedia.js +1 -1
  133. package/dist/tools/multimedia.js.map +1 -1
  134. package/dist/tools/notes.d.ts +1 -1
  135. package/dist/tools/notes.d.ts.map +1 -1
  136. package/dist/tools/notes.js +1 -1
  137. package/dist/tools/notes.js.map +1 -1
  138. package/dist/tools/notifications.d.ts +1 -1
  139. package/dist/tools/notifications.d.ts.map +1 -1
  140. package/dist/tools/notifications.js +1 -1
  141. package/dist/tools/notifications.js.map +1 -1
  142. package/dist/tools/people.d.ts +1 -1
  143. package/dist/tools/people.d.ts.map +1 -1
  144. package/dist/tools/people.js +2 -2
  145. package/dist/tools/people.js.map +1 -1
  146. package/dist/tools/projects.d.ts +1 -1
  147. package/dist/tools/projects.d.ts.map +1 -1
  148. package/dist/tools/projects.js +1 -1
  149. package/dist/tools/projects.js.map +1 -1
  150. package/dist/tools/publishers.d.ts +1 -1
  151. package/dist/tools/publishers.d.ts.map +1 -1
  152. package/dist/tools/publishers.js +1 -1
  153. package/dist/tools/publishers.js.map +1 -1
  154. package/dist/tools/purchases.d.ts +1 -1
  155. package/dist/tools/purchases.d.ts.map +1 -1
  156. package/dist/tools/purchases.js +1 -1
  157. package/dist/tools/purchases.js.map +1 -1
  158. package/dist/tools/recordings.d.ts +1 -1
  159. package/dist/tools/recordings.d.ts.map +1 -1
  160. package/dist/tools/recordings.js +1 -1
  161. package/dist/tools/recordings.js.map +1 -1
  162. package/dist/tools/releases.d.ts +1 -1
  163. package/dist/tools/releases.d.ts.map +1 -1
  164. package/dist/tools/releases.js +1 -1
  165. package/dist/tools/releases.js.map +1 -1
  166. package/dist/tools/royalties.d.ts +1 -1
  167. package/dist/tools/royalties.d.ts.map +1 -1
  168. package/dist/tools/royalties.js +1 -1
  169. package/dist/tools/royalties.js.map +1 -1
  170. package/dist/tools/search.d.ts +1 -1
  171. package/dist/tools/search.d.ts.map +1 -1
  172. package/dist/tools/search.js +1 -1
  173. package/dist/tools/search.js.map +1 -1
  174. package/dist/tools/send.d.ts +1 -1
  175. package/dist/tools/send.d.ts.map +1 -1
  176. package/dist/tools/send.js +1 -1
  177. package/dist/tools/send.js.map +1 -1
  178. package/dist/tools/sessions.d.ts +1 -1
  179. package/dist/tools/sessions.d.ts.map +1 -1
  180. package/dist/tools/sessions.js +1 -1
  181. package/dist/tools/sessions.js.map +1 -1
  182. package/dist/tools/settings.d.ts +1 -1
  183. package/dist/tools/settings.d.ts.map +1 -1
  184. package/dist/tools/settings.js +1 -1
  185. package/dist/tools/settings.js.map +1 -1
  186. package/dist/tools/share-links.d.ts +1 -1
  187. package/dist/tools/share-links.d.ts.map +1 -1
  188. package/dist/tools/share-links.js +1 -1
  189. package/dist/tools/share-links.js.map +1 -1
  190. package/dist/tools/split-sheets.d.ts +1 -1
  191. package/dist/tools/split-sheets.d.ts.map +1 -1
  192. package/dist/tools/split-sheets.js +1 -1
  193. package/dist/tools/split-sheets.js.map +1 -1
  194. package/dist/tools/team.d.ts +1 -1
  195. package/dist/tools/team.d.ts.map +1 -1
  196. package/dist/tools/team.js +1 -1
  197. package/dist/tools/team.js.map +1 -1
  198. package/dist/tools/telegram.d.ts +1 -1
  199. package/dist/tools/telegram.d.ts.map +1 -1
  200. package/dist/tools/telegram.js +1 -1
  201. package/dist/tools/telegram.js.map +1 -1
  202. package/dist/tools/uploads.d.ts +1 -1
  203. package/dist/tools/uploads.d.ts.map +1 -1
  204. package/dist/tools/uploads.js +1 -1
  205. package/dist/tools/uploads.js.map +1 -1
  206. package/dist/tools/works.d.ts +1 -1
  207. package/dist/tools/works.d.ts.map +1 -1
  208. package/dist/tools/works.js +1 -1
  209. package/dist/tools/works.js.map +1 -1
  210. package/package.json +3 -1
  211. package/.mcpregistry_github_token +0 -1
  212. package/.mcpregistry_registry_token +0 -1
  213. package/dist/apps/briefing.d.ts +0 -2
  214. package/dist/apps/briefing.d.ts.map +0 -1
  215. package/dist/apps/briefing.js +0 -308
  216. package/dist/apps/briefing.js.map +0 -1
  217. package/dist/pica-sdk.d.ts +0 -1181
  218. package/dist/pica-sdk.d.ts.map +0 -1
  219. package/dist/pica-sdk.js +0 -1419
  220. package/dist/pica-sdk.js.map +0 -1
  221. package/dist/tools/health.d.ts +0 -17
  222. package/dist/tools/health.d.ts.map +0 -1
  223. package/dist/tools/health.js +0 -67
  224. package/dist/tools/health.js.map +0 -1
  225. package/dist/tools/pica-score.d.ts +0 -15
  226. package/dist/tools/pica-score.d.ts.map +0 -1
  227. package/dist/tools/pica-score.js +0 -28
  228. package/dist/tools/pica-score.js.map +0 -1
  229. package/dist/tools/registration.d.ts +0 -16
  230. package/dist/tools/registration.d.ts.map +0 -1
  231. package/dist/tools/registration.js +0 -50
  232. package/dist/tools/registration.js.map +0 -1
  233. package/dist/utils/audit.d.ts +0 -28
  234. package/dist/utils/audit.d.ts.map +0 -1
  235. package/dist/utils/audit.js +0 -28
  236. package/dist/utils/audit.js.map +0 -1
  237. package/dist/utils/confirmation.d.ts +0 -12
  238. package/dist/utils/confirmation.d.ts.map +0 -1
  239. package/dist/utils/confirmation.js +0 -78
  240. package/dist/utils/confirmation.js.map +0 -1
  241. package/dist/utils/credentials.d.ts +0 -11
  242. package/dist/utils/credentials.d.ts.map +0 -1
  243. package/dist/utils/credentials.js +0 -47
  244. package/dist/utils/credentials.js.map +0 -1
  245. package/dist/utils/credit-gate.d.ts +0 -17
  246. package/dist/utils/credit-gate.d.ts.map +0 -1
  247. package/dist/utils/credit-gate.js +0 -100
  248. package/dist/utils/credit-gate.js.map +0 -1
  249. package/dist/utils/enrichment-format.d.ts +0 -31
  250. package/dist/utils/enrichment-format.d.ts.map +0 -1
  251. package/dist/utils/enrichment-format.js +0 -69
  252. package/dist/utils/enrichment-format.js.map +0 -1
  253. package/dist/utils/errors.d.ts +0 -29
  254. package/dist/utils/errors.d.ts.map +0 -1
  255. package/dist/utils/errors.js +0 -139
  256. package/dist/utils/errors.js.map +0 -1
  257. package/dist/utils/formatting.d.ts +0 -64
  258. package/dist/utils/formatting.d.ts.map +0 -1
  259. package/dist/utils/formatting.js +0 -153
  260. package/dist/utils/formatting.js.map +0 -1
  261. package/dist/utils/mpp.d.ts +0 -63
  262. package/dist/utils/mpp.d.ts.map +0 -1
  263. package/dist/utils/mpp.js +0 -137
  264. package/dist/utils/mpp.js.map +0 -1
  265. package/dist/utils/notify-parties.d.ts +0 -35
  266. package/dist/utils/notify-parties.d.ts.map +0 -1
  267. package/dist/utils/notify-parties.js +0 -59
  268. package/dist/utils/notify-parties.js.map +0 -1
  269. package/server.json +0 -30
@@ -1,63 +0,0 @@
1
- import type { CallToolResult, McpError } from "@modelcontextprotocol/sdk/types.js";
2
- export declare const MPP_PER_CREDIT_PRICES: Record<string, number>;
3
- /** Default currency for MPP charges */
4
- export declare const MPP_DEFAULT_CURRENCY = "usd";
5
- /** All supported MPP currencies */
6
- export declare const MPP_SUPPORTED_CURRENCIES: string[];
7
- /**
8
- * Get per-credit amount in minor units for a currency.
9
- * Falls back to USD if currency not supported.
10
- */
11
- export declare function getMppPerCreditAmount(currency: string): number;
12
- /**
13
- * Calculate total charge amount for a number of credits.
14
- */
15
- export declare function getMppChargeAmount(creditCost: number, currency: string): {
16
- amount: string;
17
- currency: string;
18
- };
19
- /**
20
- * Check if MPP is configured (env vars present).
21
- */
22
- export declare function isMppConfigured(): boolean;
23
- /**
24
- * Get or create the MPP instance. Returns null if not configured.
25
- */
26
- export declare function getMppInstance(): any | null;
27
- /**
28
- * Reset the MPP instance (for testing).
29
- */
30
- export declare function resetMppInstance(): void;
31
- /**
32
- * Extra metadata from the MCP CallToolRequest.
33
- * Contains MPP credentials when an agent retries after a 402.
34
- */
35
- export type McpExtra = {
36
- _meta?: Record<string, unknown>;
37
- [key: string]: unknown;
38
- };
39
- /**
40
- * Result of an MPP charge attempt.
41
- */
42
- export type MppChargeResult = {
43
- status: 402;
44
- challenge: McpError;
45
- } | {
46
- status: 200;
47
- withReceipt: (result: CallToolResult) => CallToolResult;
48
- };
49
- /**
50
- * Attempt to charge via MPP for a credit-gated operation.
51
- *
52
- * @param creditCost Number of credits the operation costs
53
- * @param operationName Human-readable operation name for the charge description
54
- * @param currency Currency to charge in (default: usd)
55
- * @param extra The MCP request extra/meta (contains credential on retry)
56
- * @returns Charge result, or null if MPP is not configured
57
- */
58
- export declare function chargeMpp(creditCost: number, operationName: string, currency?: string, extra?: McpExtra): Promise<MppChargeResult | null>;
59
- /**
60
- * Format a human-readable price for a number of credits in a currency.
61
- */
62
- export declare function formatMppPrice(creditCost: number, currency?: string): string;
63
- //# sourceMappingURL=mpp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mpp.d.ts","sourceRoot":"","sources":["../../src/utils/mpp.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACT,MAAM,oCAAoC,CAAC;AAO5C,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWxD,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,mCAAmC;AACnC,eAAO,MAAM,wBAAwB,UAAqC,CAAC;AAE3E;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOtC;AAaD;;GAEG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,GAAG,GAAG,IAAI,CAsB3C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAGvC;AAMD;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,WAAW,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,cAAc,CAAA;CAAE,CAAC;AAE7E;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,MAA6B,EACvC,KAAK,GAAE,QAAa,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAiBjC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,GAAE,MAA6B,GACtC,MAAM,CAKR"}
package/dist/utils/mpp.js DELETED
@@ -1,137 +0,0 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- /**
3
- * MPP (Machine Payments Protocol) inline payment helper.
4
- *
5
- * Wraps mppx to provide per-credit charging for credit-gated MCP operations.
6
- * Same pricing as credit packs (pica_25 best-value rate per credit).
7
- *
8
- * Environment variables:
9
- * MPP_SECRET_KEY — HMAC key for challenge binding (required for MPP)
10
- * MPP_STRIPE_NETWORK_ID — Stripe Business Network Profile ID (required for MPP)
11
- * MPP_TESTNET — set "true" for staging/dev
12
- * STRIPE_SECRET_KEY — already exists, used by mppx for payment settlement
13
- *
14
- * If MPP_SECRET_KEY or MPP_STRIPE_NETWORK_ID are not set, MPP is disabled
15
- * and the gate falls through to the existing insufficient_credits error.
16
- */
17
- import { Mppx, stripe } from "mppx/server";
18
- import { Transport as McpTransport } from "mppx/mcp-sdk/server";
19
- // ---------------------------------------------------------------------------
20
- // Per-credit pricing in minor units (pica_25 pack / 25 credits)
21
- // Verified against live Stripe prices 2026-03-31
22
- // ---------------------------------------------------------------------------
23
- export const MPP_PER_CREDIT_PRICES = {
24
- gbp: 40, // £0.40
25
- usd: 48, // $0.48
26
- eur: 44, // €0.44
27
- cad: 64, // CA$0.64
28
- aud: 72, // A$0.72
29
- zar: 396, // R4
30
- ngn: 20000, // ₦200
31
- kes: 3196, // KSh32
32
- brl: 160, // R$1.60
33
- mxn: 636, // MX$6
34
- };
35
- /** Default currency for MPP charges */
36
- export const MPP_DEFAULT_CURRENCY = "usd";
37
- /** All supported MPP currencies */
38
- export const MPP_SUPPORTED_CURRENCIES = Object.keys(MPP_PER_CREDIT_PRICES);
39
- /**
40
- * Get per-credit amount in minor units for a currency.
41
- * Falls back to USD if currency not supported.
42
- */
43
- export function getMppPerCreditAmount(currency) {
44
- const key = currency.toLowerCase();
45
- return (MPP_PER_CREDIT_PRICES[key] ?? MPP_PER_CREDIT_PRICES[MPP_DEFAULT_CURRENCY]);
46
- }
47
- /**
48
- * Calculate total charge amount for a number of credits.
49
- */
50
- export function getMppChargeAmount(creditCost, currency) {
51
- const perCredit = getMppPerCreditAmount(currency);
52
- const total = perCredit * creditCost;
53
- return {
54
- amount: String(total),
55
- currency: currency.toLowerCase(),
56
- };
57
- }
58
- // ---------------------------------------------------------------------------
59
- // MPP instance (lazy singleton)
60
- // ---------------------------------------------------------------------------
61
- // Use `any` for the instance type — mppx generics are deeply nested and
62
- // cause "two different types with this name exist" errors with explicit annotations.
63
- // The runtime behavior is fully type-safe via mppx's internal validation.
64
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
- let mppInstance = null;
66
- let mppChecked = false;
67
- /**
68
- * Check if MPP is configured (env vars present).
69
- */
70
- export function isMppConfigured() {
71
- return !!(process.env.MPP_SECRET_KEY &&
72
- process.env.MPP_STRIPE_NETWORK_ID &&
73
- process.env.STRIPE_SECRET_KEY);
74
- }
75
- /**
76
- * Get or create the MPP instance. Returns null if not configured.
77
- */
78
- export function getMppInstance() {
79
- if (mppChecked)
80
- return mppInstance;
81
- mppChecked = true;
82
- if (!isMppConfigured()) {
83
- return null;
84
- }
85
- mppInstance = Mppx.create({
86
- methods: [
87
- stripe.charge({
88
- secretKey: process.env.STRIPE_SECRET_KEY,
89
- networkId: process.env.MPP_STRIPE_NETWORK_ID,
90
- paymentMethodTypes: ["card", "link"],
91
- }),
92
- ],
93
- secretKey: process.env.MPP_SECRET_KEY,
94
- realm: "withpica.com",
95
- transport: McpTransport.mcpSdk(),
96
- });
97
- return mppInstance;
98
- }
99
- /**
100
- * Reset the MPP instance (for testing).
101
- */
102
- export function resetMppInstance() {
103
- mppInstance = null;
104
- mppChecked = false;
105
- }
106
- /**
107
- * Attempt to charge via MPP for a credit-gated operation.
108
- *
109
- * @param creditCost Number of credits the operation costs
110
- * @param operationName Human-readable operation name for the charge description
111
- * @param currency Currency to charge in (default: usd)
112
- * @param extra The MCP request extra/meta (contains credential on retry)
113
- * @returns Charge result, or null if MPP is not configured
114
- */
115
- export async function chargeMpp(creditCost, operationName, currency = MPP_DEFAULT_CURRENCY, extra = {}) {
116
- const mpp = getMppInstance();
117
- if (!mpp)
118
- return null;
119
- const { amount, currency: chargeCurrency } = getMppChargeAmount(creditCost, currency);
120
- const handler = mpp.charge({
121
- amount,
122
- currency: chargeCurrency,
123
- description: `${operationName} (${creditCost} pica credit${creditCost !== 1 ? "s" : ""})`,
124
- });
125
- const result = await handler(extra);
126
- return result;
127
- }
128
- /**
129
- * Format a human-readable price for a number of credits in a currency.
130
- */
131
- export function formatMppPrice(creditCost, currency = MPP_DEFAULT_CURRENCY) {
132
- const perCredit = getMppPerCreditAmount(currency);
133
- const total = (perCredit * creditCost) / 100;
134
- const cur = currency.toUpperCase();
135
- return `${total.toFixed(2)} ${cur}`;
136
- }
137
- //# sourceMappingURL=mpp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mpp.js","sourceRoot":"","sources":["../../src/utils/mpp.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAa,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,8EAA8E;AAC9E,gEAAgE;AAChE,iDAAiD;AACjD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,qBAAqB,GAA2B;IAC3D,GAAG,EAAE,EAAE,EAAE,QAAQ;IACjB,GAAG,EAAE,EAAE,EAAE,QAAQ;IACjB,GAAG,EAAE,EAAE,EAAE,QAAQ;IACjB,GAAG,EAAE,EAAE,EAAE,UAAU;IACnB,GAAG,EAAE,EAAE,EAAE,SAAS;IAClB,GAAG,EAAE,GAAG,EAAE,KAAK;IACf,GAAG,EAAE,KAAK,EAAE,OAAO;IACnB,GAAG,EAAE,IAAI,EAAE,QAAQ;IACnB,GAAG,EAAE,GAAG,EAAE,SAAS;IACnB,GAAG,EAAE,GAAG,EAAE,OAAO;CAClB,CAAC;AAEF,uCAAuC;AACvC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C,mCAAmC;AACnC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,CACL,qBAAqB,CAAC,GAAG,CAAC,IAAI,qBAAqB,CAAC,oBAAoB,CAAC,CAC1E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAkB,EAClB,QAAgB;IAEhB,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,SAAS,GAAG,UAAU,CAAC;IACrC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,WAAW,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,gCAAgC;AAChC,8EAA8E;AAE9E,wEAAwE;AACxE,qFAAqF;AACrF,0EAA0E;AAC1E,8DAA8D;AAC9D,IAAI,WAAW,GAAQ,IAAI,CAAC;AAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,CAAC,CAAC,CACP,OAAO,CAAC,GAAG,CAAC,cAAc;QAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,UAAU;QAAE,OAAO,WAAW,CAAC;IACnC,UAAU,GAAG,IAAI,CAAC;IAElB,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,OAAO,EAAE;YACP,MAAM,CAAC,MAAM,CAAC;gBACZ,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAkB;gBACzC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,qBAAsB;gBAC7C,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;aACrC,CAAC;SACH;QACD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,cAAe;QACtC,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,YAAY,CAAC,MAAM,EAAE;KACjC,CAAC,CAAC;IAEH,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,WAAW,GAAG,IAAI,CAAC;IACnB,UAAU,GAAG,KAAK,CAAC;AACrB,CAAC;AAsBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,UAAkB,EAClB,aAAqB,EACrB,WAAmB,oBAAoB,EACvC,QAAkB,EAAE;IAEpB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAC7D,UAAU,EACV,QAAQ,CACT,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,MAAM;QACN,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,GAAG,aAAa,KAAK,UAAU,eAAe,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;KAC1F,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAA2B,CAAC,CAAC;IAC1D,OAAO,MAAyB,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,UAAkB,EAClB,WAAmB,oBAAoB;IAEvC,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;AACtC,CAAC"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Reusable party notification utility.
3
- *
4
- * Sends notifications to people involved in a write operation.
5
- * Delivers via in-app + Telegram + email (all fire-and-forget).
6
- * Used by agreement, credit, split, and collaborator tools.
7
- */
8
- import { PicaClient } from "../pica-sdk.js";
9
- export interface PartyNotification {
10
- person_id: string;
11
- message: string;
12
- work_id?: string;
13
- notification_type?: string;
14
- }
15
- export interface NotifyResult {
16
- person_id: string;
17
- name: string;
18
- delivered: boolean;
19
- channels?: {
20
- in_app?: boolean;
21
- telegram?: boolean;
22
- email?: boolean;
23
- };
24
- reason?: string;
25
- }
26
- /**
27
- * Notify one or more parties about a catalog action.
28
- * Returns results per person. Never throws — failures are per-party.
29
- */
30
- export declare function notifyParties(pica: PicaClient, parties: PartyNotification[]): Promise<NotifyResult[]>;
31
- /**
32
- * Format notification results into a human-readable summary line.
33
- */
34
- export declare function summarizeNotifications(results: NotifyResult[]): string;
35
- //# sourceMappingURL=notify-parties.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notify-parties.d.ts","sourceRoot":"","sources":["../../src/utils/notify-parties.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,iBAAiB,EAAE,GAC3B,OAAO,CAAC,YAAY,EAAE,CAAC,CAiCzB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,CAuBtE"}
@@ -1,59 +0,0 @@
1
- // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
- /**
3
- * Notify one or more parties about a catalog action.
4
- * Returns results per person. Never throws — failures are per-party.
5
- */
6
- export async function notifyParties(pica, parties) {
7
- const results = [];
8
- for (const party of parties) {
9
- if (!party.person_id)
10
- continue;
11
- try {
12
- const result = await pica.notifications.sendToPerson({
13
- person_id: party.person_id,
14
- message: party.message,
15
- work_id: party.work_id,
16
- notification_type: party.notification_type || "collaboration_update",
17
- });
18
- const data = result.data || result;
19
- results.push({
20
- person_id: party.person_id,
21
- name: data.person_name || "Unknown",
22
- delivered: data.delivered,
23
- channels: data.channels,
24
- reason: data.reason,
25
- });
26
- }
27
- catch {
28
- results.push({
29
- person_id: party.person_id,
30
- name: "Unknown",
31
- delivered: false,
32
- reason: "notification_failed",
33
- });
34
- }
35
- }
36
- return results;
37
- }
38
- /**
39
- * Format notification results into a human-readable summary line.
40
- */
41
- export function summarizeNotifications(results) {
42
- if (results.length === 0)
43
- return "";
44
- const delivered = results.filter((r) => r.delivered);
45
- const notPica = results.filter((r) => r.reason === "not_a_pica_user");
46
- const failed = results.filter((r) => !r.delivered && r.reason !== "not_a_pica_user");
47
- const parts = [];
48
- if (delivered.length > 0) {
49
- parts.push(`Notified: ${delivered.map((r) => r.name).join(", ")}`);
50
- }
51
- if (notPica.length > 0) {
52
- parts.push(`Not PICA users (use pica_collaborators_invite): ${notPica.map((r) => r.name).join(", ")}`);
53
- }
54
- if (failed.length > 0) {
55
- parts.push(`Notification failed: ${failed.map((r) => r.name).join(", ")}`);
56
- }
57
- return parts.join(". ");
58
- }
59
- //# sourceMappingURL=notify-parties.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notify-parties.js","sourceRoot":"","sources":["../../src/utils/notify-parties.ts"],"names":[],"mappings":"AAAA,6DAA6D;AA2B7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAgB,EAChB,OAA4B;IAE5B,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,SAAS;QAE/B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;gBACnD,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,IAAI,sBAAsB;aACrE,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,SAAS;gBACnC,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,IAAI,EAAE,SAAS;gBACf,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,qBAAqB;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAuB;IAC5D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,iBAAiB,CACtD,CAAC;IAEF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,aAAa,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACR,mDAAmD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3F,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
package/server.json DELETED
@@ -1,30 +0,0 @@
1
- {
2
- "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
- "name": "io.github.withpica/pica",
4
- "description": "193 tools for music catalog management — works, recordings, credits, royalties",
5
- "repository": {
6
- "url": "https://github.com/withpica/pica",
7
- "source": "github",
8
- "subfolder": "mcp-server"
9
- },
10
- "version": "2.4.1",
11
- "packages": [
12
- {
13
- "registryType": "npm",
14
- "identifier": "@withpica/mcp-server",
15
- "version": "2.4.1",
16
- "transport": {
17
- "type": "stdio"
18
- },
19
- "environmentVariables": [
20
- {
21
- "description": "Your PICA API key — get one at https://connect.withpica.com",
22
- "isRequired": true,
23
- "format": "string",
24
- "isSecret": true,
25
- "name": "PICA_API_KEY"
26
- }
27
- ]
28
- }
29
- ]
30
- }