@withpica/mcp-server 1.3.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 (347) hide show
  1. package/.claude/settings.local.json +5 -0
  2. package/CHANGELOG.md +1850 -0
  3. package/README.md +304 -0
  4. package/assets/fonts/GeistSans-Light.woff2 +0 -0
  5. package/assets/fonts/InstrumentSerif-Italic.woff2 +0 -0
  6. package/assets/fonts/InstrumentSerif-Regular.woff2 +0 -0
  7. package/dist/apps/download.d.ts +2 -0
  8. package/dist/apps/download.d.ts.map +1 -0
  9. package/dist/apps/download.js +125 -0
  10. package/dist/apps/download.js.map +1 -0
  11. package/dist/apps/generated/shared-bundle.d.ts +5 -0
  12. package/dist/apps/generated/shared-bundle.d.ts.map +1 -0
  13. package/dist/apps/generated/shared-bundle.js +7 -0
  14. package/dist/apps/generated/shared-bundle.js.map +1 -0
  15. package/dist/apps/release.d.ts +2 -0
  16. package/dist/apps/release.d.ts.map +1 -0
  17. package/dist/apps/release.js +69 -0
  18. package/dist/apps/release.js.map +1 -0
  19. package/dist/apps/shared.d.ts +15 -0
  20. package/dist/apps/shared.d.ts.map +1 -0
  21. package/dist/apps/shared.js +480 -0
  22. package/dist/apps/shared.js.map +1 -0
  23. package/dist/apps/upload.d.ts +2 -0
  24. package/dist/apps/upload.d.ts.map +1 -0
  25. package/dist/apps/upload.js +280 -0
  26. package/dist/apps/upload.js.map +1 -0
  27. package/dist/config.d.ts +14 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +73 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/index.d.ts +3 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +35 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/prompts/index.d.ts +86 -0
  36. package/dist/prompts/index.d.ts.map +1 -0
  37. package/dist/prompts/index.js +645 -0
  38. package/dist/prompts/index.js.map +1 -0
  39. package/dist/resources/agent-guide.d.ts +15 -0
  40. package/dist/resources/agent-guide.d.ts.map +1 -0
  41. package/dist/resources/agent-guide.js +284 -0
  42. package/dist/resources/agent-guide.js.map +1 -0
  43. package/dist/resources/index.d.ts +66 -0
  44. package/dist/resources/index.d.ts.map +1 -0
  45. package/dist/resources/index.js +510 -0
  46. package/dist/resources/index.js.map +1 -0
  47. package/dist/resources/llms-primer.d.ts +2 -0
  48. package/dist/resources/llms-primer.d.ts.map +1 -0
  49. package/dist/resources/llms-primer.js +68 -0
  50. package/dist/resources/llms-primer.js.map +1 -0
  51. package/dist/resources/required-schemas.generated.d.ts +455 -0
  52. package/dist/resources/required-schemas.generated.d.ts.map +1 -0
  53. package/dist/resources/required-schemas.generated.js +1041 -0
  54. package/dist/resources/required-schemas.generated.js.map +1 -0
  55. package/dist/resources/required-schemas.source.d.ts +53 -0
  56. package/dist/resources/required-schemas.source.d.ts.map +1 -0
  57. package/dist/resources/required-schemas.source.js +493 -0
  58. package/dist/resources/required-schemas.source.js.map +1 -0
  59. package/dist/resources/welcome.d.ts +14 -0
  60. package/dist/resources/welcome.d.ts.map +1 -0
  61. package/dist/resources/welcome.js +26 -0
  62. package/dist/resources/welcome.js.map +1 -0
  63. package/dist/server-instructions.d.ts +60 -0
  64. package/dist/server-instructions.d.ts.map +1 -0
  65. package/dist/server-instructions.js +93 -0
  66. package/dist/server-instructions.js.map +1 -0
  67. package/dist/server.d.ts +52 -0
  68. package/dist/server.d.ts.map +1 -0
  69. package/dist/server.js +334 -0
  70. package/dist/server.js.map +1 -0
  71. package/dist/tools/access-simulate.d.ts +23 -0
  72. package/dist/tools/access-simulate.d.ts.map +1 -0
  73. package/dist/tools/access-simulate.js +162 -0
  74. package/dist/tools/access-simulate.js.map +1 -0
  75. package/dist/tools/agent-identity.d.ts +36 -0
  76. package/dist/tools/agent-identity.d.ts.map +1 -0
  77. package/dist/tools/agent-identity.js +274 -0
  78. package/dist/tools/agent-identity.js.map +1 -0
  79. package/dist/tools/agreement-types.d.ts +27 -0
  80. package/dist/tools/agreement-types.d.ts.map +1 -0
  81. package/dist/tools/agreement-types.js +281 -0
  82. package/dist/tools/agreement-types.js.map +1 -0
  83. package/dist/tools/agreements.d.ts +20 -0
  84. package/dist/tools/agreements.d.ts.map +1 -0
  85. package/dist/tools/agreements.js +282 -0
  86. package/dist/tools/agreements.js.map +1 -0
  87. package/dist/tools/analytics.d.ts +20 -0
  88. package/dist/tools/analytics.d.ts.map +1 -0
  89. package/dist/tools/analytics.js +130 -0
  90. package/dist/tools/analytics.js.map +1 -0
  91. package/dist/tools/app-tools.d.ts +15 -0
  92. package/dist/tools/app-tools.d.ts.map +1 -0
  93. package/dist/tools/app-tools.js +388 -0
  94. package/dist/tools/app-tools.js.map +1 -0
  95. package/dist/tools/assets.d.ts +25 -0
  96. package/dist/tools/assets.d.ts.map +1 -0
  97. package/dist/tools/assets.js +454 -0
  98. package/dist/tools/assets.js.map +1 -0
  99. package/dist/tools/audio-files.d.ts +20 -0
  100. package/dist/tools/audio-files.d.ts.map +1 -0
  101. package/dist/tools/audio-files.js +409 -0
  102. package/dist/tools/audio-files.js.map +1 -0
  103. package/dist/tools/audit.d.ts +19 -0
  104. package/dist/tools/audit.d.ts.map +1 -0
  105. package/dist/tools/audit.js +58 -0
  106. package/dist/tools/audit.js.map +1 -0
  107. package/dist/tools/auth.d.ts +22 -0
  108. package/dist/tools/auth.d.ts.map +1 -0
  109. package/dist/tools/auth.js +212 -0
  110. package/dist/tools/auth.js.map +1 -0
  111. package/dist/tools/bulk.d.ts +22 -0
  112. package/dist/tools/bulk.d.ts.map +1 -0
  113. package/dist/tools/bulk.js +164 -0
  114. package/dist/tools/bulk.js.map +1 -0
  115. package/dist/tools/calendar.d.ts +15 -0
  116. package/dist/tools/calendar.d.ts.map +1 -0
  117. package/dist/tools/calendar.js +68 -0
  118. package/dist/tools/calendar.js.map +1 -0
  119. package/dist/tools/collaborators.d.ts +21 -0
  120. package/dist/tools/collaborators.d.ts.map +1 -0
  121. package/dist/tools/collaborators.js +381 -0
  122. package/dist/tools/collaborators.js.map +1 -0
  123. package/dist/tools/comparisons.d.ts +22 -0
  124. package/dist/tools/comparisons.d.ts.map +1 -0
  125. package/dist/tools/comparisons.js +80 -0
  126. package/dist/tools/comparisons.js.map +1 -0
  127. package/dist/tools/credits.d.ts +39 -0
  128. package/dist/tools/credits.d.ts.map +1 -0
  129. package/dist/tools/credits.js +541 -0
  130. package/dist/tools/credits.js.map +1 -0
  131. package/dist/tools/custody-hints.d.ts +16 -0
  132. package/dist/tools/custody-hints.d.ts.map +1 -0
  133. package/dist/tools/custody-hints.js +27 -0
  134. package/dist/tools/custody-hints.js.map +1 -0
  135. package/dist/tools/custody.d.ts +38 -0
  136. package/dist/tools/custody.d.ts.map +1 -0
  137. package/dist/tools/custody.js +281 -0
  138. package/dist/tools/custody.js.map +1 -0
  139. package/dist/tools/dashboard.d.ts +22 -0
  140. package/dist/tools/dashboard.d.ts.map +1 -0
  141. package/dist/tools/dashboard.js +258 -0
  142. package/dist/tools/dashboard.js.map +1 -0
  143. package/dist/tools/directory.d.ts +15 -0
  144. package/dist/tools/directory.d.ts.map +1 -0
  145. package/dist/tools/directory.js +107 -0
  146. package/dist/tools/directory.js.map +1 -0
  147. package/dist/tools/discovery.d.ts +49 -0
  148. package/dist/tools/discovery.d.ts.map +1 -0
  149. package/dist/tools/discovery.js +851 -0
  150. package/dist/tools/discovery.js.map +1 -0
  151. package/dist/tools/disputes.d.ts +18 -0
  152. package/dist/tools/disputes.d.ts.map +1 -0
  153. package/dist/tools/disputes.js +62 -0
  154. package/dist/tools/disputes.js.map +1 -0
  155. package/dist/tools/documents.d.ts +15 -0
  156. package/dist/tools/documents.d.ts.map +1 -0
  157. package/dist/tools/documents.js +37 -0
  158. package/dist/tools/documents.js.map +1 -0
  159. package/dist/tools/duplicates.d.ts +25 -0
  160. package/dist/tools/duplicates.d.ts.map +1 -0
  161. package/dist/tools/duplicates.js +108 -0
  162. package/dist/tools/duplicates.js.map +1 -0
  163. package/dist/tools/enrichment.d.ts +56 -0
  164. package/dist/tools/enrichment.d.ts.map +1 -0
  165. package/dist/tools/enrichment.js +616 -0
  166. package/dist/tools/enrichment.js.map +1 -0
  167. package/dist/tools/exports.d.ts +19 -0
  168. package/dist/tools/exports.d.ts.map +1 -0
  169. package/dist/tools/exports.js +184 -0
  170. package/dist/tools/exports.js.map +1 -0
  171. package/dist/tools/feedback.d.ts +22 -0
  172. package/dist/tools/feedback.d.ts.map +1 -0
  173. package/dist/tools/feedback.js +100 -0
  174. package/dist/tools/feedback.js.map +1 -0
  175. package/dist/tools/forbidden-keywords.d.ts +62 -0
  176. package/dist/tools/forbidden-keywords.d.ts.map +1 -0
  177. package/dist/tools/forbidden-keywords.js +99 -0
  178. package/dist/tools/forbidden-keywords.js.map +1 -0
  179. package/dist/tools/gap-hints.d.ts +53 -0
  180. package/dist/tools/gap-hints.d.ts.map +1 -0
  181. package/dist/tools/gap-hints.js +245 -0
  182. package/dist/tools/gap-hints.js.map +1 -0
  183. package/dist/tools/groups.d.ts +29 -0
  184. package/dist/tools/groups.d.ts.map +1 -0
  185. package/dist/tools/groups.js +186 -0
  186. package/dist/tools/groups.js.map +1 -0
  187. package/dist/tools/import-documents.d.ts +21 -0
  188. package/dist/tools/import-documents.d.ts.map +1 -0
  189. package/dist/tools/import-documents.js +206 -0
  190. package/dist/tools/import-documents.js.map +1 -0
  191. package/dist/tools/import.d.ts +31 -0
  192. package/dist/tools/import.d.ts.map +1 -0
  193. package/dist/tools/import.js +610 -0
  194. package/dist/tools/import.js.map +1 -0
  195. package/dist/tools/index.d.ts +293 -0
  196. package/dist/tools/index.d.ts.map +1 -0
  197. package/dist/tools/index.js +1182 -0
  198. package/dist/tools/index.js.map +1 -0
  199. package/dist/tools/integrations.d.ts +19 -0
  200. package/dist/tools/integrations.d.ts.map +1 -0
  201. package/dist/tools/integrations.js +120 -0
  202. package/dist/tools/integrations.js.map +1 -0
  203. package/dist/tools/labels.d.ts +20 -0
  204. package/dist/tools/labels.d.ts.map +1 -0
  205. package/dist/tools/labels.js +48 -0
  206. package/dist/tools/labels.js.map +1 -0
  207. package/dist/tools/licensing.d.ts +40 -0
  208. package/dist/tools/licensing.d.ts.map +1 -0
  209. package/dist/tools/licensing.js +436 -0
  210. package/dist/tools/licensing.js.map +1 -0
  211. package/dist/tools/memory.d.ts +21 -0
  212. package/dist/tools/memory.d.ts.map +1 -0
  213. package/dist/tools/memory.js +120 -0
  214. package/dist/tools/memory.js.map +1 -0
  215. package/dist/tools/metadata.d.ts +15 -0
  216. package/dist/tools/metadata.d.ts.map +1 -0
  217. package/dist/tools/metadata.js +1532 -0
  218. package/dist/tools/metadata.js.map +1 -0
  219. package/dist/tools/multimedia.d.ts +19 -0
  220. package/dist/tools/multimedia.d.ts.map +1 -0
  221. package/dist/tools/multimedia.js +371 -0
  222. package/dist/tools/multimedia.js.map +1 -0
  223. package/dist/tools/my-reported-issues.d.ts +32 -0
  224. package/dist/tools/my-reported-issues.d.ts.map +1 -0
  225. package/dist/tools/my-reported-issues.js +123 -0
  226. package/dist/tools/my-reported-issues.js.map +1 -0
  227. package/dist/tools/notes.d.ts +21 -0
  228. package/dist/tools/notes.d.ts.map +1 -0
  229. package/dist/tools/notes.js +115 -0
  230. package/dist/tools/notes.js.map +1 -0
  231. package/dist/tools/notifications.d.ts +28 -0
  232. package/dist/tools/notifications.d.ts.map +1 -0
  233. package/dist/tools/notifications.js +417 -0
  234. package/dist/tools/notifications.js.map +1 -0
  235. package/dist/tools/onboarding.d.ts +24 -0
  236. package/dist/tools/onboarding.d.ts.map +1 -0
  237. package/dist/tools/onboarding.js +81 -0
  238. package/dist/tools/onboarding.js.map +1 -0
  239. package/dist/tools/people.d.ts +254 -0
  240. package/dist/tools/people.d.ts.map +1 -0
  241. package/dist/tools/people.js +481 -0
  242. package/dist/tools/people.js.map +1 -0
  243. package/dist/tools/projects.d.ts +20 -0
  244. package/dist/tools/projects.d.ts.map +1 -0
  245. package/dist/tools/projects.js +316 -0
  246. package/dist/tools/projects.js.map +1 -0
  247. package/dist/tools/public-filter.d.ts +43 -0
  248. package/dist/tools/public-filter.d.ts.map +1 -0
  249. package/dist/tools/public-filter.js +356 -0
  250. package/dist/tools/public-filter.js.map +1 -0
  251. package/dist/tools/publishers.d.ts +30 -0
  252. package/dist/tools/publishers.d.ts.map +1 -0
  253. package/dist/tools/publishers.js +105 -0
  254. package/dist/tools/publishers.js.map +1 -0
  255. package/dist/tools/purchases.d.ts +27 -0
  256. package/dist/tools/purchases.d.ts.map +1 -0
  257. package/dist/tools/purchases.js +9 -0
  258. package/dist/tools/purchases.js.map +1 -0
  259. package/dist/tools/recording-attribution-hints.d.ts +24 -0
  260. package/dist/tools/recording-attribution-hints.d.ts.map +1 -0
  261. package/dist/tools/recording-attribution-hints.js +27 -0
  262. package/dist/tools/recording-attribution-hints.js.map +1 -0
  263. package/dist/tools/recordings.d.ts +96 -0
  264. package/dist/tools/recordings.d.ts.map +1 -0
  265. package/dist/tools/recordings.js +564 -0
  266. package/dist/tools/recordings.js.map +1 -0
  267. package/dist/tools/recovery-hints.d.ts +40 -0
  268. package/dist/tools/recovery-hints.d.ts.map +1 -0
  269. package/dist/tools/recovery-hints.js +827 -0
  270. package/dist/tools/recovery-hints.js.map +1 -0
  271. package/dist/tools/release-rich.d.ts +31 -0
  272. package/dist/tools/release-rich.d.ts.map +1 -0
  273. package/dist/tools/release-rich.js +245 -0
  274. package/dist/tools/release-rich.js.map +1 -0
  275. package/dist/tools/releases.d.ts +36 -0
  276. package/dist/tools/releases.d.ts.map +1 -0
  277. package/dist/tools/releases.js +649 -0
  278. package/dist/tools/releases.js.map +1 -0
  279. package/dist/tools/report-issue.d.ts +21 -0
  280. package/dist/tools/report-issue.d.ts.map +1 -0
  281. package/dist/tools/report-issue.js +101 -0
  282. package/dist/tools/report-issue.js.map +1 -0
  283. package/dist/tools/royalties.d.ts +23 -0
  284. package/dist/tools/royalties.d.ts.map +1 -0
  285. package/dist/tools/royalties.js +262 -0
  286. package/dist/tools/royalties.js.map +1 -0
  287. package/dist/tools/search.d.ts +30 -0
  288. package/dist/tools/search.d.ts.map +1 -0
  289. package/dist/tools/search.js +115 -0
  290. package/dist/tools/search.js.map +1 -0
  291. package/dist/tools/send.d.ts +17 -0
  292. package/dist/tools/send.d.ts.map +1 -0
  293. package/dist/tools/send.js +188 -0
  294. package/dist/tools/send.js.map +1 -0
  295. package/dist/tools/sessions.d.ts +18 -0
  296. package/dist/tools/sessions.d.ts.map +1 -0
  297. package/dist/tools/sessions.js +153 -0
  298. package/dist/tools/sessions.js.map +1 -0
  299. package/dist/tools/settings.d.ts +23 -0
  300. package/dist/tools/settings.d.ts.map +1 -0
  301. package/dist/tools/settings.js +365 -0
  302. package/dist/tools/settings.js.map +1 -0
  303. package/dist/tools/share-links.d.ts +22 -0
  304. package/dist/tools/share-links.d.ts.map +1 -0
  305. package/dist/tools/share-links.js +188 -0
  306. package/dist/tools/share-links.js.map +1 -0
  307. package/dist/tools/signup.d.ts +26 -0
  308. package/dist/tools/signup.d.ts.map +1 -0
  309. package/dist/tools/signup.js +266 -0
  310. package/dist/tools/signup.js.map +1 -0
  311. package/dist/tools/split-sheets.d.ts +25 -0
  312. package/dist/tools/split-sheets.d.ts.map +1 -0
  313. package/dist/tools/split-sheets.js +309 -0
  314. package/dist/tools/split-sheets.js.map +1 -0
  315. package/dist/tools/storage-config.d.ts +13 -0
  316. package/dist/tools/storage-config.d.ts.map +1 -0
  317. package/dist/tools/storage-config.js +245 -0
  318. package/dist/tools/storage-config.js.map +1 -0
  319. package/dist/tools/subscription.d.ts +60 -0
  320. package/dist/tools/subscription.d.ts.map +1 -0
  321. package/dist/tools/subscription.js +440 -0
  322. package/dist/tools/subscription.js.map +1 -0
  323. package/dist/tools/sync-placements.d.ts +31 -0
  324. package/dist/tools/sync-placements.d.ts.map +1 -0
  325. package/dist/tools/sync-placements.js +431 -0
  326. package/dist/tools/sync-placements.js.map +1 -0
  327. package/dist/tools/team.d.ts +22 -0
  328. package/dist/tools/team.d.ts.map +1 -0
  329. package/dist/tools/team.js +144 -0
  330. package/dist/tools/team.js.map +1 -0
  331. package/dist/tools/telegram.d.ts +21 -0
  332. package/dist/tools/telegram.d.ts.map +1 -0
  333. package/dist/tools/telegram.js +144 -0
  334. package/dist/tools/telegram.js.map +1 -0
  335. package/dist/tools/uploads.d.ts +17 -0
  336. package/dist/tools/uploads.d.ts.map +1 -0
  337. package/dist/tools/uploads.js +165 -0
  338. package/dist/tools/uploads.js.map +1 -0
  339. package/dist/tools/works.d.ts +71 -0
  340. package/dist/tools/works.d.ts.map +1 -0
  341. package/dist/tools/works.js +694 -0
  342. package/dist/tools/works.js.map +1 -0
  343. package/package.json +54 -0
  344. package/scripts/build-required-schemas.ts +233 -0
  345. package/scripts/bundle-apps.ts +61 -0
  346. package/scripts/refresh-schema-mirror.ts +182 -0
  347. package/server.json +20 -0
@@ -0,0 +1,1532 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ /**
3
+ * Metadata registry for all 193 MCP tools.
4
+ *
5
+ * Categories: catalog, enrichment, business, discovery, media, comms, settings
6
+ * Risk: safe (read-only), mutating (creates/modifies), destructive (deletes/merges)
7
+ * retry_safe: true for safe tools, false for destructive, varies for mutating
8
+ */
9
+ export const TOOL_METADATA = {
10
+ // ── Works ──────────────────────────────────────────────────────────────────
11
+ pica_works_query: {
12
+ category: "catalog",
13
+ risk: "safe",
14
+ retry_safe: true,
15
+ display_name: "find works",
16
+ },
17
+ pica_works_inspect: {
18
+ category: "catalog",
19
+ risk: "safe",
20
+ retry_safe: true,
21
+ display_name: "inspect a work",
22
+ },
23
+ pica_works_create: {
24
+ category: "catalog",
25
+ risk: "mutating",
26
+ retry_safe: false,
27
+ display_name: "create a new work",
28
+ },
29
+ pica_works_update: {
30
+ category: "catalog",
31
+ risk: "mutating",
32
+ retry_safe: false,
33
+ display_name: "update a work",
34
+ },
35
+ pica_works_delete: {
36
+ category: "catalog",
37
+ risk: "destructive",
38
+ retry_safe: false,
39
+ display_name: "delete a work",
40
+ },
41
+ pica_works_verify: {
42
+ category: "catalog",
43
+ risk: "mutating",
44
+ retry_safe: true,
45
+ display_name: "verify work metadata",
46
+ },
47
+ pica_works_bulk_delete: {
48
+ category: "catalog",
49
+ risk: "destructive",
50
+ retry_safe: false,
51
+ display_name: "bulk delete works",
52
+ },
53
+ pica_works_bulk_update: {
54
+ category: "catalog",
55
+ risk: "mutating",
56
+ retry_safe: false,
57
+ display_name: "bulk update works",
58
+ },
59
+ // ── People ─────────────────────────────────────────────────────────────────
60
+ pica_people_query: {
61
+ category: "catalog",
62
+ risk: "safe",
63
+ retry_safe: true,
64
+ display_name: "find people",
65
+ },
66
+ pica_people_inspect: {
67
+ category: "catalog",
68
+ risk: "safe",
69
+ retry_safe: true,
70
+ display_name: "inspect a person",
71
+ },
72
+ pica_people_create: {
73
+ category: "catalog",
74
+ risk: "mutating",
75
+ retry_safe: false,
76
+ display_name: "create a new person",
77
+ },
78
+ pica_people_update: {
79
+ category: "catalog",
80
+ risk: "mutating",
81
+ retry_safe: false,
82
+ display_name: "update a person",
83
+ },
84
+ pica_people_delete: {
85
+ category: "catalog",
86
+ risk: "destructive",
87
+ retry_safe: false,
88
+ display_name: "delete a person",
89
+ },
90
+ pica_people_bulk_update_roles: {
91
+ category: "catalog",
92
+ risk: "mutating",
93
+ retry_safe: false,
94
+ display_name: "bulk update people roles",
95
+ },
96
+ // ── Groups (member relationships on people, ADR-223) ─────────────────────
97
+ pica_group_add_member: {
98
+ category: "catalog",
99
+ risk: "mutating",
100
+ retry_safe: false,
101
+ display_name: "add a member to a group",
102
+ },
103
+ pica_group_remove_member: {
104
+ category: "catalog",
105
+ risk: "mutating",
106
+ retry_safe: true,
107
+ display_name: "remove a member from a group",
108
+ },
109
+ pica_group_list_members: {
110
+ category: "catalog",
111
+ risk: "safe",
112
+ retry_safe: true,
113
+ display_name: "list group members",
114
+ },
115
+ pica_person_list_groups: {
116
+ category: "catalog",
117
+ risk: "safe",
118
+ retry_safe: true,
119
+ display_name: "list groups a person belongs to",
120
+ },
121
+ // ── Recordings ─────────────────────────────────────────────────────────────
122
+ pica_recordings_query: {
123
+ category: "catalog",
124
+ risk: "safe",
125
+ retry_safe: true,
126
+ display_name: "find recordings",
127
+ },
128
+ pica_recordings_inspect: {
129
+ category: "catalog",
130
+ risk: "safe",
131
+ retry_safe: true,
132
+ display_name: "inspect a recording",
133
+ },
134
+ pica_recordings_create: {
135
+ category: "catalog",
136
+ risk: "mutating",
137
+ retry_safe: false,
138
+ display_name: "create a new recording",
139
+ },
140
+ pica_recordings_update: {
141
+ category: "catalog",
142
+ risk: "mutating",
143
+ retry_safe: false,
144
+ display_name: "update a recording",
145
+ },
146
+ pica_recordings_delete: {
147
+ category: "catalog",
148
+ risk: "destructive",
149
+ retry_safe: false,
150
+ display_name: "delete a recording",
151
+ },
152
+ // ── Credits ────────────────────────────────────────────────────────────────
153
+ // pica_credits_balance / pica_credits_history / pica_credits_purchase
154
+ // removed 2026-04-22 — see docs/MCP_REFINEMENT_LOG.md entry B-001.
155
+ // pica_credits_list / pica_credits_update are work_credits, not billing.
156
+ pica_credits_list: {
157
+ category: "catalog",
158
+ risk: "safe",
159
+ retry_safe: true,
160
+ display_name: "list credits on a work",
161
+ },
162
+ pica_credits_update: {
163
+ category: "catalog",
164
+ risk: "mutating",
165
+ retry_safe: false,
166
+ display_name: "update credits on a work",
167
+ },
168
+ // ADR-213 Primitive B — first-party recording-side production credits.
169
+ // Distinct from pica_credits_update (work_credits / songwriter side).
170
+ pica_recording_credits_update: {
171
+ category: "catalog",
172
+ risk: "mutating",
173
+ retry_safe: false,
174
+ display_name: "add a recording-side credit",
175
+ },
176
+ // ── Agreements ─────────────────────────────────────────────────────────────
177
+ pica_agreements_query: {
178
+ category: "business",
179
+ risk: "safe",
180
+ retry_safe: true,
181
+ display_name: "find agreements",
182
+ },
183
+ pica_agreements_inspect: {
184
+ category: "business",
185
+ risk: "safe",
186
+ retry_safe: true,
187
+ display_name: "inspect an agreement",
188
+ },
189
+ pica_agreements_create: {
190
+ category: "business",
191
+ risk: "mutating",
192
+ retry_safe: false,
193
+ display_name: "create a new agreement",
194
+ },
195
+ pica_agreements_update: {
196
+ category: "business",
197
+ risk: "mutating",
198
+ retry_safe: false,
199
+ display_name: "update an agreement",
200
+ },
201
+ pica_agreements_delete: {
202
+ category: "business",
203
+ risk: "destructive",
204
+ retry_safe: false,
205
+ display_name: "delete an agreement",
206
+ },
207
+ pica_agreements_link_work: {
208
+ category: "business",
209
+ risk: "mutating",
210
+ retry_safe: false,
211
+ display_name: "link a work to an agreement",
212
+ },
213
+ // ── Agreement Types (unified) ──────────────────────────────────────────────
214
+ pica_agreement_types_query: {
215
+ category: "business",
216
+ risk: "safe",
217
+ retry_safe: true,
218
+ display_name: "find agreement types",
219
+ },
220
+ pica_agreement_types_inspect: {
221
+ category: "business",
222
+ risk: "safe",
223
+ retry_safe: true,
224
+ display_name: "inspect an agreement type",
225
+ },
226
+ pica_agreement_types_create: {
227
+ category: "business",
228
+ risk: "mutating",
229
+ retry_safe: false,
230
+ display_name: "create an agreement type",
231
+ },
232
+ pica_agreement_types_update: {
233
+ category: "business",
234
+ risk: "mutating",
235
+ retry_safe: false,
236
+ display_name: "update an agreement type",
237
+ },
238
+ pica_agreement_types_delete: {
239
+ category: "business",
240
+ risk: "destructive",
241
+ retry_safe: false,
242
+ display_name: "delete an agreement type",
243
+ },
244
+ pica_agreement_templates_render: {
245
+ category: "business",
246
+ risk: "safe",
247
+ retry_safe: true,
248
+ display_name: "render an agreement template",
249
+ },
250
+ pica_agreement_templates_duplicate: {
251
+ category: "business",
252
+ risk: "mutating",
253
+ retry_safe: false,
254
+ display_name: "duplicate an agreement template",
255
+ },
256
+ pica_agreement_templates_set_default: {
257
+ category: "business",
258
+ risk: "mutating",
259
+ retry_safe: false,
260
+ display_name: "set default agreement template",
261
+ },
262
+ // ── Split Sheets & Recording Splits ────────────────────────────────────────
263
+ pica_split_sheet_list: {
264
+ category: "business",
265
+ risk: "safe",
266
+ retry_safe: true,
267
+ display_name: "list split sheets",
268
+ },
269
+ pica_split_sheet_get: {
270
+ category: "business",
271
+ risk: "safe",
272
+ retry_safe: true,
273
+ display_name: "get a split sheet",
274
+ },
275
+ pica_split_sheet_generate: {
276
+ category: "business",
277
+ risk: "mutating",
278
+ retry_safe: true,
279
+ display_name: "generate a split sheet",
280
+ },
281
+ pica_split_sheet_send: {
282
+ category: "comms",
283
+ risk: "mutating",
284
+ retry_safe: false,
285
+ display_name: "send a split sheet for signing",
286
+ },
287
+ pica_recording_splits_list: {
288
+ category: "business",
289
+ risk: "safe",
290
+ retry_safe: true,
291
+ display_name: "list recording splits",
292
+ },
293
+ pica_recording_splits_create: {
294
+ category: "business",
295
+ risk: "mutating",
296
+ retry_safe: false,
297
+ display_name: "create recording splits",
298
+ },
299
+ pica_recording_splits_verify: {
300
+ category: "business",
301
+ risk: "safe",
302
+ retry_safe: true,
303
+ display_name: "verify recording splits total 100%",
304
+ },
305
+ // ── Royalties & Statements ─────────────────────────────────────────────────
306
+ pica_royalties_list: {
307
+ category: "business",
308
+ risk: "safe",
309
+ retry_safe: true,
310
+ display_name: "list royalty entries",
311
+ },
312
+ pica_royalties_get: {
313
+ category: "business",
314
+ risk: "safe",
315
+ retry_safe: true,
316
+ display_name: "get a royalty entry",
317
+ },
318
+ pica_royalties_summary: {
319
+ category: "business",
320
+ risk: "safe",
321
+ retry_safe: true,
322
+ display_name: "get royalties summary",
323
+ },
324
+ pica_statements_list: {
325
+ category: "business",
326
+ risk: "safe",
327
+ retry_safe: true,
328
+ display_name: "list royalty statements",
329
+ },
330
+ pica_statements_get: {
331
+ category: "business",
332
+ risk: "safe",
333
+ retry_safe: true,
334
+ display_name: "get a royalty statement",
335
+ },
336
+ // ── Disputes ───────────────────────────────────────────────────────────────
337
+ pica_disputes_list: {
338
+ category: "business",
339
+ risk: "safe",
340
+ retry_safe: true,
341
+ display_name: "list disputes",
342
+ },
343
+ // ── Custody (ADR-158 Plan C) ───────────────────────────────────────────────
344
+ pica_custody_list: {
345
+ category: "catalog",
346
+ risk: "safe",
347
+ retry_safe: true,
348
+ display_name: "list custody claims",
349
+ },
350
+ pica_custody_history: {
351
+ category: "catalog",
352
+ risk: "safe",
353
+ retry_safe: true,
354
+ display_name: "custody history",
355
+ },
356
+ pica_custody_claim: {
357
+ category: "catalog",
358
+ risk: "mutating",
359
+ retry_safe: false,
360
+ display_name: "claim custody",
361
+ },
362
+ pica_custody_respond: {
363
+ category: "catalog",
364
+ risk: "mutating",
365
+ retry_safe: false,
366
+ display_name: "respond to a custody claim",
367
+ },
368
+ pica_custody_resolve_pending: {
369
+ category: "catalog",
370
+ risk: "safe",
371
+ retry_safe: true,
372
+ display_name: "resolve pending custody",
373
+ },
374
+ pica_custody_reconcile: {
375
+ category: "catalog",
376
+ risk: "mutating",
377
+ retry_safe: false,
378
+ display_name: "reconcile custody",
379
+ },
380
+ // ── Enrichment ─────────────────────────────────────────────────────────────
381
+ pica_enrichment_candidates: {
382
+ category: "enrichment",
383
+ risk: "safe",
384
+ retry_safe: true,
385
+ display_name: "list enrichment candidates",
386
+ },
387
+ // ADR-163 Tier B review queue + ADR-178 agent-proposed enrichment
388
+ pica_enrichment_proposals_list: {
389
+ category: "enrichment",
390
+ risk: "safe",
391
+ retry_safe: true,
392
+ display_name: "list pending enrichment proposals",
393
+ },
394
+ pica_enrichment_proposal_apply: {
395
+ category: "enrichment",
396
+ risk: "mutating",
397
+ retry_safe: false,
398
+ display_name: "apply an enrichment proposal",
399
+ },
400
+ pica_enrichment_proposal_reject: {
401
+ category: "enrichment",
402
+ risk: "mutating",
403
+ retry_safe: true,
404
+ display_name: "reject an enrichment proposal",
405
+ },
406
+ pica_enrichment_propose: {
407
+ category: "enrichment",
408
+ risk: "mutating",
409
+ retry_safe: false,
410
+ display_name: "propose an enrichment from research",
411
+ },
412
+ // ADR-179: outcome-shaped resolvers that replace the per-source enrich_* tools
413
+ pica_resolve_work: {
414
+ category: "enrichment",
415
+ risk: "mutating",
416
+ retry_safe: true,
417
+ display_name: "resolve a work against external sources",
418
+ },
419
+ pica_resolve_person: {
420
+ category: "enrichment",
421
+ risk: "mutating",
422
+ retry_safe: true,
423
+ display_name: "resolve a person against identity sources",
424
+ },
425
+ pica_resolve_recording: {
426
+ category: "enrichment",
427
+ risk: "mutating",
428
+ retry_safe: true,
429
+ display_name: "resolve a recording against external sources",
430
+ },
431
+ pica_enrichment_compare: {
432
+ category: "enrichment",
433
+ risk: "safe",
434
+ retry_safe: true,
435
+ display_name: "compare enrichment sources",
436
+ },
437
+ pica_registrations_compare: {
438
+ category: "enrichment",
439
+ risk: "safe",
440
+ retry_safe: true,
441
+ display_name: "compare registrations across sources",
442
+ },
443
+ // ADR-164 cascade re-run + health observability
444
+ pica_run_work_cascade: {
445
+ category: "enrichment",
446
+ risk: "mutating",
447
+ retry_safe: true,
448
+ display_name: "re-run cascade rules on a work",
449
+ },
450
+ pica_run_person_cascade: {
451
+ category: "enrichment",
452
+ risk: "mutating",
453
+ retry_safe: true,
454
+ display_name: "re-run cascade rules on a person",
455
+ },
456
+ pica_cascade_health: {
457
+ category: "enrichment",
458
+ risk: "safe",
459
+ retry_safe: true,
460
+ display_name: "check cascade health counters",
461
+ },
462
+ // ── Search & Discovery ─────────────────────────────────────────────────────
463
+ pica_search_all: {
464
+ category: "discovery",
465
+ risk: "safe",
466
+ retry_safe: true,
467
+ display_name: "search across everything",
468
+ },
469
+ pica_catalog_stats: {
470
+ category: "discovery",
471
+ risk: "safe",
472
+ retry_safe: true,
473
+ display_name: "get catalog statistics",
474
+ },
475
+ pica_graph_traverse: {
476
+ category: "discovery",
477
+ risk: "safe",
478
+ retry_safe: true,
479
+ display_name: "traverse the identity graph",
480
+ },
481
+ pica_search_for_sync: {
482
+ category: "discovery",
483
+ risk: "safe",
484
+ retry_safe: true,
485
+ display_name: "search works for sync licensing",
486
+ },
487
+ pica_submit_license_enquiry: {
488
+ category: "discovery",
489
+ risk: "mutating",
490
+ retry_safe: false,
491
+ display_name: "submit a license enquiry",
492
+ },
493
+ pica_claim_credit: {
494
+ category: "discovery",
495
+ risk: "mutating",
496
+ retry_safe: false,
497
+ display_name: "claim discovered credit",
498
+ },
499
+ pica_claim_custody: {
500
+ category: "discovery",
501
+ risk: "mutating",
502
+ retry_safe: false,
503
+ display_name: "claim discovered custody",
504
+ },
505
+ pica_claim_artist: {
506
+ category: "discovery",
507
+ risk: "mutating",
508
+ retry_safe: false,
509
+ display_name: "claim discovered artist",
510
+ },
511
+ pica_discoveries_query: {
512
+ category: "discovery",
513
+ risk: "safe",
514
+ retry_safe: true,
515
+ display_name: "find discoveries",
516
+ },
517
+ pica_discoveries_review: {
518
+ category: "discovery",
519
+ risk: "mutating",
520
+ retry_safe: false,
521
+ display_name: "review a discovery",
522
+ },
523
+ pica_dashboard_attention: {
524
+ category: "discovery",
525
+ risk: "safe",
526
+ retry_safe: true,
527
+ display_name: "get items needing attention",
528
+ },
529
+ pica_dashboard_briefing: {
530
+ category: "discovery",
531
+ risk: "safe",
532
+ retry_safe: true,
533
+ display_name: "get your daily briefing",
534
+ },
535
+ pica_dashboard_pulse: {
536
+ category: "discovery",
537
+ risk: "safe",
538
+ retry_safe: true,
539
+ display_name: "get your catalog pulse",
540
+ },
541
+ // ── App Tools (MCP Apps) ──────────────────────────────────────────────────
542
+ pica_upload: {
543
+ category: "media",
544
+ risk: "safe",
545
+ retry_safe: true,
546
+ display_name: "upload files",
547
+ },
548
+ pica_download: {
549
+ category: "media",
550
+ risk: "safe",
551
+ retry_safe: true,
552
+ display_name: "download a file",
553
+ },
554
+ pica_car_preview: {
555
+ category: "media",
556
+ risk: "safe",
557
+ retry_safe: true,
558
+ display_name: "preview catalog asset report",
559
+ },
560
+ // ── Audio Files ────────────────────────────────────────────────────────────
561
+ pica_audio_query: {
562
+ category: "media",
563
+ risk: "safe",
564
+ retry_safe: true,
565
+ display_name: "find audio files",
566
+ },
567
+ pica_audio_inspect: {
568
+ category: "media",
569
+ risk: "safe",
570
+ retry_safe: true,
571
+ display_name: "inspect an audio file",
572
+ },
573
+ pica_audio_analyze: {
574
+ category: "media",
575
+ risk: "mutating",
576
+ retry_safe: true,
577
+ display_name: "analyze an audio file",
578
+ },
579
+ pica_audio_presigned_upload: {
580
+ category: "media",
581
+ risk: "mutating",
582
+ retry_safe: true,
583
+ display_name: "get presigned upload url for audio",
584
+ },
585
+ pica_audio_complete_upload: {
586
+ category: "media",
587
+ risk: "mutating",
588
+ retry_safe: false,
589
+ display_name: "complete an audio upload",
590
+ },
591
+ pica_audio_identify: {
592
+ category: "media",
593
+ risk: "mutating",
594
+ retry_safe: true,
595
+ display_name: "identify an audio file",
596
+ },
597
+ // ── Multimedia ─────────────────────────────────────────────────────────────
598
+ pica_multimedia_search: {
599
+ category: "media",
600
+ risk: "safe",
601
+ retry_safe: true,
602
+ display_name: "search multimedia",
603
+ },
604
+ pica_multimedia_create: {
605
+ category: "media",
606
+ risk: "mutating",
607
+ retry_safe: false,
608
+ display_name: "create a multimedia entry",
609
+ },
610
+ pica_multimedia_import_url: {
611
+ category: "media",
612
+ risk: "mutating",
613
+ retry_safe: true,
614
+ display_name: "import multimedia from url",
615
+ },
616
+ pica_multimedia_link_youtube: {
617
+ category: "media",
618
+ risk: "mutating",
619
+ retry_safe: false,
620
+ display_name: "link a youtube video",
621
+ },
622
+ pica_multimedia_link_work: {
623
+ category: "media",
624
+ risk: "mutating",
625
+ retry_safe: false,
626
+ display_name: "link multimedia to a work",
627
+ },
628
+ // ── Documents ──────────────────────────────────────────────────────────────
629
+ pica_documents_analyse: {
630
+ category: "media",
631
+ risk: "mutating",
632
+ retry_safe: true,
633
+ display_name: "analyse a document with ai",
634
+ },
635
+ // ── Uploads ────────────────────────────────────────────────────────────────
636
+ pica_upload_file: {
637
+ category: "media",
638
+ risk: "mutating",
639
+ retry_safe: true,
640
+ display_name: "get upload url for a file",
641
+ },
642
+ pica_upload_complete: {
643
+ category: "media",
644
+ risk: "mutating",
645
+ retry_safe: false,
646
+ display_name: "complete a file upload",
647
+ },
648
+ // ── Exports ────────────────────────────────────────────────────────────────
649
+ pica_export_catalog_csv: {
650
+ category: "catalog",
651
+ risk: "safe",
652
+ retry_safe: true,
653
+ display_name: "export catalog as csv",
654
+ },
655
+ pica_export_song_registration: {
656
+ category: "catalog",
657
+ risk: "mutating",
658
+ retry_safe: true,
659
+ display_name: "export for song registration",
660
+ },
661
+ pica_export_industry_ready: {
662
+ category: "catalog",
663
+ risk: "mutating",
664
+ retry_safe: true,
665
+ display_name: "export industry-ready package",
666
+ },
667
+ pica_export_catalog_asset_report: {
668
+ category: "catalog",
669
+ risk: "mutating",
670
+ retry_safe: true,
671
+ display_name: "export catalog asset report",
672
+ },
673
+ pica_export_ai_consent: {
674
+ category: "catalog",
675
+ risk: "mutating",
676
+ retry_safe: true,
677
+ display_name: "export ai consent declaration",
678
+ },
679
+ // ── Calendar ───────────────────────────────────────────────────────────────
680
+ pica_calendar_events: {
681
+ category: "catalog",
682
+ risk: "safe",
683
+ retry_safe: true,
684
+ display_name: "list calendar events",
685
+ },
686
+ // ── Duplicates ─────────────────────────────────────────────────────────────
687
+ pica_find_duplicates: {
688
+ category: "catalog",
689
+ risk: "safe",
690
+ retry_safe: true,
691
+ display_name: "find potential duplicates",
692
+ },
693
+ pica_merge_duplicates: {
694
+ category: "catalog",
695
+ risk: "destructive",
696
+ retry_safe: false,
697
+ display_name: "merge duplicate records",
698
+ },
699
+ // ── Projects ───────────────────────────────────────────────────────────────
700
+ pica_projects_list: {
701
+ category: "catalog",
702
+ risk: "safe",
703
+ retry_safe: true,
704
+ display_name: "list your projects",
705
+ },
706
+ pica_projects_get: {
707
+ category: "catalog",
708
+ risk: "safe",
709
+ retry_safe: true,
710
+ display_name: "get a project",
711
+ },
712
+ pica_projects_create: {
713
+ category: "catalog",
714
+ risk: "mutating",
715
+ retry_safe: false,
716
+ display_name: "create a new project",
717
+ },
718
+ pica_projects_update: {
719
+ category: "catalog",
720
+ risk: "mutating",
721
+ retry_safe: false,
722
+ display_name: "update a project",
723
+ },
724
+ pica_projects_delete: {
725
+ category: "catalog",
726
+ risk: "destructive",
727
+ retry_safe: false,
728
+ display_name: "delete a project",
729
+ },
730
+ pica_projects_attach_works: {
731
+ category: "catalog",
732
+ risk: "mutating",
733
+ retry_safe: true,
734
+ display_name: "attach works to a project",
735
+ },
736
+ // ── Releases ───────────────────────────────────────────────────────────────
737
+ pica_releases_list: {
738
+ category: "catalog",
739
+ risk: "safe",
740
+ retry_safe: true,
741
+ display_name: "list your releases",
742
+ },
743
+ pica_releases_get: {
744
+ category: "catalog",
745
+ risk: "safe",
746
+ retry_safe: true,
747
+ display_name: "get a release",
748
+ },
749
+ pica_releases_create: {
750
+ category: "catalog",
751
+ risk: "mutating",
752
+ retry_safe: false,
753
+ display_name: "create a new release",
754
+ },
755
+ pica_releases_update: {
756
+ category: "catalog",
757
+ risk: "mutating",
758
+ retry_safe: false,
759
+ display_name: "update a release",
760
+ },
761
+ pica_releases_attach_track: {
762
+ category: "catalog",
763
+ risk: "mutating",
764
+ retry_safe: true,
765
+ display_name: "attach a track to a release",
766
+ },
767
+ pica_releases_list_tracks: {
768
+ category: "catalog",
769
+ risk: "safe",
770
+ retry_safe: true,
771
+ display_name: "list tracks on a release",
772
+ },
773
+ pica_releases_detach_track: {
774
+ category: "catalog",
775
+ risk: "mutating",
776
+ retry_safe: false,
777
+ display_name: "detach a track from a release",
778
+ },
779
+ pica_releases_reorder_tracks: {
780
+ category: "catalog",
781
+ risk: "mutating",
782
+ retry_safe: false,
783
+ display_name: "reorder tracks on a release",
784
+ },
785
+ pica_releases_attach_recording_with_work: {
786
+ category: "catalog",
787
+ risk: "mutating",
788
+ retry_safe: true,
789
+ display_name: "attach a recording (with linked work) to a release",
790
+ },
791
+ // ADR-175 release workflow tools
792
+ pica_releases_bulk_attach_tracks: {
793
+ category: "catalog",
794
+ risk: "mutating",
795
+ retry_safe: false,
796
+ display_name: "bulk attach tracks to a release",
797
+ },
798
+ pica_releases_move_track: {
799
+ category: "catalog",
800
+ risk: "mutating",
801
+ retry_safe: false,
802
+ display_name: "swap two track positions on a release",
803
+ },
804
+ pica_releases_attach_track_by_identifier: {
805
+ category: "catalog",
806
+ risk: "mutating",
807
+ retry_safe: false,
808
+ display_name: "attach a track by external identifier",
809
+ },
810
+ pica_releases_create_with_tracks: {
811
+ category: "catalog",
812
+ risk: "mutating",
813
+ retry_safe: false,
814
+ display_name: "create a release with its tracks in one call",
815
+ },
816
+ pica_releases_completeness_check: {
817
+ category: "catalog",
818
+ risk: "safe",
819
+ retry_safe: true,
820
+ display_name: "release completeness diligence report",
821
+ },
822
+ // ADR-208 Phase 3 Primitive D — rich render (image + markdown summary)
823
+ pica_release_show: {
824
+ category: "catalog",
825
+ risk: "safe",
826
+ retry_safe: true,
827
+ display_name: "render a release card (cover art + markdown)",
828
+ },
829
+ // ── Sessions ───────────────────────────────────────────────────────────────
830
+ pica_sessions_list: {
831
+ category: "catalog",
832
+ risk: "safe",
833
+ retry_safe: true,
834
+ display_name: "list work sessions",
835
+ },
836
+ pica_sessions_get: {
837
+ category: "catalog",
838
+ risk: "safe",
839
+ retry_safe: true,
840
+ display_name: "get a work session",
841
+ },
842
+ pica_sessions_create: {
843
+ category: "catalog",
844
+ risk: "mutating",
845
+ retry_safe: false,
846
+ display_name: "create a work session",
847
+ },
848
+ pica_sessions_types: {
849
+ category: "catalog",
850
+ risk: "safe",
851
+ retry_safe: true,
852
+ display_name: "list session types",
853
+ },
854
+ // ── Notes ──────────────────────────────────────────────────────────────────
855
+ pica_notes_list: {
856
+ category: "catalog",
857
+ risk: "safe",
858
+ retry_safe: true,
859
+ display_name: "list notes",
860
+ },
861
+ pica_notes_get: {
862
+ category: "catalog",
863
+ risk: "safe",
864
+ retry_safe: true,
865
+ display_name: "get a note",
866
+ },
867
+ pica_notes_create: {
868
+ category: "catalog",
869
+ risk: "mutating",
870
+ retry_safe: false,
871
+ display_name: "create a note",
872
+ },
873
+ pica_notes_delete: {
874
+ category: "catalog",
875
+ risk: "destructive",
876
+ retry_safe: false,
877
+ display_name: "delete a note",
878
+ },
879
+ // ── Physical Assets ────────────────────────────────────────────────────────
880
+ pica_physical_assets_query: {
881
+ category: "catalog",
882
+ risk: "safe",
883
+ retry_safe: true,
884
+ display_name: "find physical assets",
885
+ },
886
+ pica_physical_assets_inspect: {
887
+ category: "catalog",
888
+ risk: "safe",
889
+ retry_safe: true,
890
+ display_name: "inspect a physical asset",
891
+ },
892
+ pica_physical_assets_create: {
893
+ category: "catalog",
894
+ risk: "mutating",
895
+ retry_safe: false,
896
+ display_name: "create a physical asset",
897
+ },
898
+ pica_physical_assets_update: {
899
+ category: "catalog",
900
+ risk: "mutating",
901
+ retry_safe: false,
902
+ display_name: "update a physical asset",
903
+ },
904
+ pica_physical_assets_delete: {
905
+ category: "catalog",
906
+ risk: "destructive",
907
+ retry_safe: false,
908
+ display_name: "delete a physical asset",
909
+ },
910
+ pica_physical_assets_stats: {
911
+ category: "catalog",
912
+ risk: "safe",
913
+ retry_safe: true,
914
+ display_name: "get physical assets statistics",
915
+ },
916
+ pica_physical_assets_export: {
917
+ category: "catalog",
918
+ risk: "safe",
919
+ retry_safe: true,
920
+ display_name: "export physical assets",
921
+ },
922
+ // ADR-174 Phase 2 item 5: rich provenance links between assets and works/recordings
923
+ pica_physical_assets_link_work: {
924
+ category: "catalog",
925
+ risk: "mutating",
926
+ retry_safe: false,
927
+ display_name: "link a physical asset to a work",
928
+ },
929
+ pica_physical_assets_link_recording: {
930
+ category: "catalog",
931
+ risk: "mutating",
932
+ retry_safe: false,
933
+ display_name: "link a physical asset to a recording",
934
+ },
935
+ pica_physical_assets_unlink_work: {
936
+ category: "catalog",
937
+ risk: "mutating",
938
+ retry_safe: true,
939
+ display_name: "unlink a physical asset from a work",
940
+ },
941
+ pica_physical_assets_unlink_recording: {
942
+ category: "catalog",
943
+ risk: "mutating",
944
+ retry_safe: true,
945
+ display_name: "unlink a physical asset from a recording",
946
+ },
947
+ // ── Analytics (Carbon, Provenance, Diligence) ──────────────────────────────
948
+ pica_carbon_footprint: {
949
+ category: "catalog",
950
+ risk: "safe",
951
+ retry_safe: true,
952
+ display_name: "get carbon footprint",
953
+ },
954
+ pica_carbon_live: {
955
+ category: "catalog",
956
+ risk: "safe",
957
+ retry_safe: true,
958
+ display_name: "get live carbon metrics",
959
+ },
960
+ pica_provenance_stats: {
961
+ category: "catalog",
962
+ risk: "safe",
963
+ retry_safe: true,
964
+ display_name: "get provenance statistics",
965
+ },
966
+ pica_provenance_work: {
967
+ category: "catalog",
968
+ risk: "safe",
969
+ retry_safe: true,
970
+ display_name: "get provenance for a work",
971
+ },
972
+ pica_provenance_certificate: {
973
+ category: "catalog",
974
+ risk: "mutating",
975
+ retry_safe: true,
976
+ display_name: "generate provenance certificate",
977
+ },
978
+ pica_catalog_diligence: {
979
+ category: "catalog",
980
+ risk: "safe",
981
+ retry_safe: true,
982
+ display_name: "run catalog due diligence",
983
+ },
984
+ // ── Import ─────────────────────────────────────────────────────────────────
985
+ pica_import_analyze: {
986
+ category: "catalog",
987
+ risk: "safe",
988
+ retry_safe: true,
989
+ display_name: "analyze an import file",
990
+ },
991
+ pica_import_validate: {
992
+ category: "catalog",
993
+ risk: "safe",
994
+ retry_safe: true,
995
+ display_name: "validate import data",
996
+ },
997
+ pica_import_execute: {
998
+ category: "catalog",
999
+ risk: "mutating",
1000
+ retry_safe: false,
1001
+ display_name: "execute a catalog import",
1002
+ },
1003
+ pica_import_fields: {
1004
+ category: "catalog",
1005
+ risk: "safe",
1006
+ retry_safe: true,
1007
+ display_name: "list available import fields",
1008
+ },
1009
+ pica_import_template: {
1010
+ category: "catalog",
1011
+ risk: "safe",
1012
+ retry_safe: true,
1013
+ display_name: "get import template",
1014
+ },
1015
+ pica_import_streaming_link: {
1016
+ category: "catalog",
1017
+ risk: "mutating",
1018
+ retry_safe: true,
1019
+ display_name: "import from streaming link",
1020
+ },
1021
+ pica_import_from_spotify: {
1022
+ category: "catalog",
1023
+ risk: "mutating",
1024
+ retry_safe: true,
1025
+ display_name: "import from spotify",
1026
+ },
1027
+ pica_import_youtube_link: {
1028
+ category: "catalog",
1029
+ risk: "mutating",
1030
+ retry_safe: false,
1031
+ display_name: "import a youtube video as a recording",
1032
+ },
1033
+ // ── Import Documents ───────────────────────────────────────────────────────
1034
+ pica_import_documents_query: {
1035
+ category: "catalog",
1036
+ risk: "safe",
1037
+ retry_safe: true,
1038
+ display_name: "find import documents",
1039
+ },
1040
+ pica_import_documents_inspect: {
1041
+ category: "catalog",
1042
+ risk: "safe",
1043
+ retry_safe: true,
1044
+ display_name: "inspect an import document",
1045
+ },
1046
+ pica_ingest_statement: {
1047
+ category: "catalog",
1048
+ risk: "mutating",
1049
+ retry_safe: false,
1050
+ display_name: "ingest a royalty statement",
1051
+ },
1052
+ // ── Notifications ──────────────────────────────────────────────────────────
1053
+ pica_notifications_list: {
1054
+ category: "comms",
1055
+ risk: "safe",
1056
+ retry_safe: true,
1057
+ display_name: "list notifications",
1058
+ },
1059
+ pica_notify_person: {
1060
+ category: "comms",
1061
+ risk: "mutating",
1062
+ retry_safe: false,
1063
+ display_name: "send notification to a person",
1064
+ },
1065
+ pica_notifications_mark_read: {
1066
+ category: "comms",
1067
+ risk: "mutating",
1068
+ retry_safe: true,
1069
+ display_name: "mark notifications as read",
1070
+ },
1071
+ // ADR-218 cross-transport awareness — read + acknowledge the shared
1072
+ // discovery_events ledger that backs MCP / Telegram / web / email
1073
+ pica_notifications_recent: {
1074
+ category: "comms",
1075
+ risk: "safe",
1076
+ retry_safe: true,
1077
+ display_name: "read recent cross-transport notifications",
1078
+ },
1079
+ pica_notification_acknowledge: {
1080
+ category: "comms",
1081
+ risk: "mutating",
1082
+ retry_safe: true,
1083
+ display_name: "acknowledge cross-transport notifications",
1084
+ },
1085
+ // ── Collaborators ──────────────────────────────────────────────────────────
1086
+ pica_collaborators_invite: {
1087
+ category: "comms",
1088
+ risk: "mutating",
1089
+ retry_safe: false,
1090
+ display_name: "invite a collaborator",
1091
+ },
1092
+ pica_collaborators_invites_list: {
1093
+ category: "comms",
1094
+ risk: "safe",
1095
+ retry_safe: true,
1096
+ display_name: "list collaborator invites",
1097
+ },
1098
+ pica_collaborators_invite_resend: {
1099
+ category: "comms",
1100
+ risk: "mutating",
1101
+ retry_safe: false,
1102
+ display_name: "resend a collaborator invite",
1103
+ },
1104
+ // ADR-157 warm-path collaboration tools
1105
+ pica_collaborators_incoming_list: {
1106
+ category: "comms",
1107
+ risk: "safe",
1108
+ retry_safe: true,
1109
+ display_name: "list invites addressed to you",
1110
+ },
1111
+ pica_collaborators_accept: {
1112
+ category: "comms",
1113
+ risk: "mutating",
1114
+ retry_safe: false,
1115
+ display_name: "accept a collaboration invite",
1116
+ },
1117
+ pica_collaborators_dispute: {
1118
+ category: "comms",
1119
+ risk: "mutating",
1120
+ retry_safe: true,
1121
+ display_name: "dispute a collaboration invite",
1122
+ },
1123
+ pica_collaborators_invite_bulk: {
1124
+ category: "comms",
1125
+ risk: "mutating",
1126
+ retry_safe: false,
1127
+ display_name: "send multiple collaborator invites",
1128
+ },
1129
+ // ── Send Hub ───────────────────────────────────────────────────────────────
1130
+ pica_send_message: {
1131
+ category: "comms",
1132
+ risk: "mutating",
1133
+ retry_safe: false,
1134
+ display_name: "send a message",
1135
+ },
1136
+ pica_send_query: {
1137
+ category: "comms",
1138
+ risk: "safe",
1139
+ retry_safe: true,
1140
+ display_name: "find sent messages",
1141
+ },
1142
+ pica_send_resend: {
1143
+ category: "comms",
1144
+ risk: "mutating",
1145
+ retry_safe: false,
1146
+ display_name: "resend a message",
1147
+ },
1148
+ // ── Share Links ────────────────────────────────────────────────────────────
1149
+ pica_share_links_list: {
1150
+ category: "comms",
1151
+ risk: "safe",
1152
+ retry_safe: true,
1153
+ display_name: "list share links",
1154
+ },
1155
+ pica_share_links_inspect: {
1156
+ category: "comms",
1157
+ risk: "safe",
1158
+ retry_safe: true,
1159
+ display_name: "inspect a share link",
1160
+ },
1161
+ pica_share_links_update: {
1162
+ category: "comms",
1163
+ risk: "mutating",
1164
+ retry_safe: true,
1165
+ display_name: "update a share link",
1166
+ },
1167
+ pica_share_links_delete: {
1168
+ category: "comms",
1169
+ risk: "destructive",
1170
+ retry_safe: false,
1171
+ display_name: "delete a share link",
1172
+ },
1173
+ pica_share_links_create: {
1174
+ category: "comms",
1175
+ risk: "mutating",
1176
+ retry_safe: false,
1177
+ display_name: "create a share link",
1178
+ },
1179
+ // ── Telegram ───────────────────────────────────────────────────────────────
1180
+ pica_telegram_status: {
1181
+ category: "comms",
1182
+ risk: "safe",
1183
+ retry_safe: true,
1184
+ display_name: "check telegram connection status",
1185
+ },
1186
+ pica_telegram_connect: {
1187
+ category: "comms",
1188
+ risk: "mutating",
1189
+ retry_safe: true,
1190
+ display_name: "pair telegram with pica",
1191
+ },
1192
+ pica_notify_user: {
1193
+ category: "comms",
1194
+ risk: "mutating",
1195
+ retry_safe: false,
1196
+ display_name: "send notification to user via telegram",
1197
+ },
1198
+ // ADR-160 scheduled telegram reminders
1199
+ pica_notify_user_at: {
1200
+ category: "comms",
1201
+ risk: "mutating",
1202
+ retry_safe: false,
1203
+ display_name: "schedule a telegram reminder",
1204
+ },
1205
+ pica_notify_user_list_pending: {
1206
+ category: "comms",
1207
+ risk: "safe",
1208
+ retry_safe: true,
1209
+ display_name: "list pending reminders",
1210
+ },
1211
+ pica_notify_user_cancel: {
1212
+ category: "comms",
1213
+ risk: "mutating",
1214
+ retry_safe: true,
1215
+ display_name: "cancel a scheduled reminder",
1216
+ },
1217
+ // ── Publishers ─────────────────────────────────────────────────────────────
1218
+ pica_publishers_query: {
1219
+ category: "catalog",
1220
+ risk: "safe",
1221
+ retry_safe: true,
1222
+ display_name: "find publishers",
1223
+ },
1224
+ pica_publishers_create: {
1225
+ category: "catalog",
1226
+ risk: "mutating",
1227
+ retry_safe: false,
1228
+ display_name: "create a publisher",
1229
+ },
1230
+ // ── Labels (ADR-174 Decision 3) ────────────────────────────────────────────
1231
+ pica_labels_query: {
1232
+ category: "catalog",
1233
+ risk: "safe",
1234
+ retry_safe: true,
1235
+ display_name: "find labels",
1236
+ },
1237
+ // ── Licensing (enquiry read/update) ────────────────────────────────────────
1238
+ pica_list_license_enquiries: {
1239
+ category: "comms",
1240
+ risk: "safe",
1241
+ retry_safe: true,
1242
+ display_name: "list license enquiries",
1243
+ },
1244
+ pica_get_license_enquiry: {
1245
+ category: "comms",
1246
+ risk: "safe",
1247
+ retry_safe: true,
1248
+ display_name: "get a license enquiry",
1249
+ },
1250
+ pica_update_license_enquiry_status: {
1251
+ category: "settings",
1252
+ risk: "mutating",
1253
+ retry_safe: false,
1254
+ display_name: "update license enquiry status",
1255
+ },
1256
+ // ── Team ───────────────────────────────────────────────────────────────────
1257
+ pica_audit_list: {
1258
+ category: "settings",
1259
+ risk: "safe",
1260
+ retry_safe: true,
1261
+ display_name: "review recent AI activity",
1262
+ },
1263
+ pica_team_list: {
1264
+ category: "settings",
1265
+ risk: "safe",
1266
+ retry_safe: true,
1267
+ display_name: "list team members",
1268
+ },
1269
+ pica_team_get: {
1270
+ category: "settings",
1271
+ risk: "safe",
1272
+ retry_safe: true,
1273
+ display_name: "get a team member",
1274
+ },
1275
+ pica_team_invite: {
1276
+ category: "comms",
1277
+ risk: "mutating",
1278
+ retry_safe: false,
1279
+ display_name: "invite a team member",
1280
+ },
1281
+ pica_team_update_role: {
1282
+ category: "settings",
1283
+ risk: "mutating",
1284
+ retry_safe: false,
1285
+ display_name: "update team member role",
1286
+ },
1287
+ pica_team_remove: {
1288
+ category: "settings",
1289
+ risk: "destructive",
1290
+ retry_safe: false,
1291
+ display_name: "remove a team member",
1292
+ },
1293
+ // ── Memory ─────────────────────────────────────────────────────────────────
1294
+ pica_memory_list: {
1295
+ category: "settings",
1296
+ risk: "safe",
1297
+ retry_safe: true,
1298
+ display_name: "list saved memories",
1299
+ },
1300
+ pica_memory_search: {
1301
+ category: "settings",
1302
+ risk: "safe",
1303
+ retry_safe: true,
1304
+ display_name: "search memories",
1305
+ },
1306
+ pica_memory_save: {
1307
+ category: "settings",
1308
+ risk: "mutating",
1309
+ retry_safe: false,
1310
+ display_name: "save a memory",
1311
+ },
1312
+ pica_memory_delete: {
1313
+ category: "settings",
1314
+ risk: "destructive",
1315
+ retry_safe: false,
1316
+ display_name: "delete a memory",
1317
+ },
1318
+ // ── Settings ───────────────────────────────────────────────────────────────
1319
+ // pica_credits_history / pica_credits_purchase removed 2026-04-22.
1320
+ pica_storage_status: {
1321
+ category: "settings",
1322
+ risk: "safe",
1323
+ retry_safe: true,
1324
+ display_name: "check storage usage and connection health",
1325
+ },
1326
+ // ADR-217 — BYOC storage configure + disconnect.
1327
+ pica_storage_configure_start: {
1328
+ category: "settings",
1329
+ // Mints a JWT-bound URL only — no DB writes happen at the tool layer.
1330
+ // The configure page (Phase 2) does the persistence after probe success.
1331
+ risk: "safe",
1332
+ retry_safe: true,
1333
+ display_name: "set up your own cloud storage bucket (S3, GCS, Azure, R2, Backblaze)",
1334
+ },
1335
+ pica_storage_disconnect: {
1336
+ category: "settings",
1337
+ // Future uploads route differently — destructive in the same sense as
1338
+ // pica_delete_my_account. Two-step gate handled by the dispatcher.
1339
+ risk: "destructive",
1340
+ retry_safe: true,
1341
+ display_name: "revert storage to PICA-managed default",
1342
+ },
1343
+ pica_organisation_profile: {
1344
+ category: "settings",
1345
+ risk: "safe",
1346
+ retry_safe: true,
1347
+ display_name: "view account profile",
1348
+ },
1349
+ pica_user_profile: {
1350
+ category: "settings",
1351
+ risk: "safe",
1352
+ retry_safe: true,
1353
+ display_name: "view your profile",
1354
+ },
1355
+ pica_directory_settings: {
1356
+ category: "settings",
1357
+ risk: "safe",
1358
+ retry_safe: true,
1359
+ display_name: "view directory settings",
1360
+ },
1361
+ pica_integrations_status: {
1362
+ category: "settings",
1363
+ risk: "safe",
1364
+ retry_safe: true,
1365
+ display_name: "check integrations status",
1366
+ },
1367
+ // ADR-184: user-facing self-service privacy & account tools
1368
+ pica_get_privacy_settings: {
1369
+ category: "settings",
1370
+ risk: "safe",
1371
+ retry_safe: true,
1372
+ display_name: "check marketing opt-in state",
1373
+ },
1374
+ pica_update_privacy_settings: {
1375
+ category: "settings",
1376
+ risk: "mutating",
1377
+ retry_safe: true,
1378
+ display_name: "update marketing preferences",
1379
+ },
1380
+ pica_submit_feedback: {
1381
+ category: "comms",
1382
+ risk: "mutating",
1383
+ retry_safe: false,
1384
+ display_name: "submit feedback to the team",
1385
+ },
1386
+ pica_report_issue: {
1387
+ category: "comms",
1388
+ risk: "mutating",
1389
+ retry_safe: true,
1390
+ display_name: "report a workflow issue to the PICA team",
1391
+ },
1392
+ pica_my_reported_issues: {
1393
+ category: "comms",
1394
+ risk: "safe",
1395
+ retry_safe: true,
1396
+ display_name: "list issues you've reported and their resolution status",
1397
+ },
1398
+ pica_acknowledge_onboarding: {
1399
+ category: "settings",
1400
+ risk: "mutating",
1401
+ retry_safe: true,
1402
+ display_name: "acknowledge MCP onboarding (OAuth-arrived users only)",
1403
+ },
1404
+ pica_signup_start: {
1405
+ // ADR-211 Phase 1 — agent-discoverable signup verb. Reachable in
1406
+ // unauthenticated mode (lobby) on both stdio + HTTP transports.
1407
+ // risk=safe because the tool itself only mints a JWT-bound URL — the
1408
+ // org / trial / credentials are created by the page (Phase 2) after
1409
+ // the user clicks the link and verifies email ownership.
1410
+ category: "settings",
1411
+ risk: "safe",
1412
+ retry_safe: true,
1413
+ display_name: "start a withPICA signup (sends a magic link to verify email)",
1414
+ },
1415
+ // ADR-210 Phase 2 — explicit billing surface
1416
+ pica_subscription_status: {
1417
+ category: "settings",
1418
+ risk: "safe",
1419
+ retry_safe: true,
1420
+ display_name: "check your subscription status",
1421
+ },
1422
+ pica_subscription_manage: {
1423
+ category: "settings",
1424
+ risk: "mutating",
1425
+ retry_safe: false,
1426
+ display_name: "subscribe, upgrade, manage, or cancel",
1427
+ },
1428
+ pica_delete_my_account: {
1429
+ category: "settings",
1430
+ risk: "destructive",
1431
+ retry_safe: false,
1432
+ display_name: "delete your account",
1433
+ },
1434
+ pica_export_my_data: {
1435
+ category: "settings",
1436
+ risk: "mutating",
1437
+ retry_safe: false,
1438
+ display_name: "export your personal data (GDPR)",
1439
+ },
1440
+ // ADR-189 Phase 3 — self identity capture. Both are retry_safe
1441
+ // because the writes are idempotent — re-applying the same IPI /
1442
+ // ISNI leaves the row in the same final state. Rate-limited
1443
+ // separately by checkActionRateLimit (20/hour per user).
1444
+ pica_update_my_identity: {
1445
+ category: "settings",
1446
+ risk: "mutating",
1447
+ retry_safe: true,
1448
+ display_name: "capture your identifiers (IPI / ISNI / PRO)",
1449
+ },
1450
+ pica_update_organisation_profile: {
1451
+ category: "settings",
1452
+ risk: "mutating",
1453
+ retry_safe: true,
1454
+ display_name: "update your account profile",
1455
+ },
1456
+ // ── Agent Identity (ADR-185 Part 1) ───────────────────────────────────────
1457
+ pica_create_agent_identity: {
1458
+ category: "settings",
1459
+ risk: "mutating",
1460
+ retry_safe: false,
1461
+ display_name: "create an agent identity",
1462
+ },
1463
+ pica_issue_agent_grant: {
1464
+ category: "settings",
1465
+ risk: "mutating",
1466
+ retry_safe: false,
1467
+ display_name: "issue an agent grant",
1468
+ },
1469
+ pica_list_my_agent_grants: {
1470
+ category: "settings",
1471
+ risk: "safe",
1472
+ retry_safe: true,
1473
+ display_name: "list your agent grants",
1474
+ },
1475
+ pica_revoke_agent_grant: {
1476
+ category: "settings",
1477
+ risk: "destructive",
1478
+ retry_safe: false,
1479
+ display_name: "revoke an agent grant",
1480
+ },
1481
+ pica_get_agent_activity: {
1482
+ category: "settings",
1483
+ risk: "safe",
1484
+ retry_safe: true,
1485
+ display_name: "view your agent activity",
1486
+ },
1487
+ // ── ADR-222 Sync Placements ───────────────────────────────────────────────
1488
+ pica_sync_placements_query: {
1489
+ category: "business",
1490
+ risk: "safe",
1491
+ retry_safe: true,
1492
+ display_name: "find sync placements",
1493
+ },
1494
+ pica_sync_placements_inspect: {
1495
+ category: "business",
1496
+ risk: "safe",
1497
+ retry_safe: true,
1498
+ display_name: "inspect a sync placement",
1499
+ },
1500
+ pica_sync_placements_create: {
1501
+ category: "business",
1502
+ risk: "mutating",
1503
+ retry_safe: false,
1504
+ display_name: "create a sync placement",
1505
+ },
1506
+ pica_sync_placements_update: {
1507
+ category: "business",
1508
+ risk: "mutating",
1509
+ retry_safe: false,
1510
+ display_name: "update a sync placement",
1511
+ },
1512
+ pica_sync_placements_delete: {
1513
+ category: "business",
1514
+ risk: "destructive",
1515
+ retry_safe: false,
1516
+ display_name: "delete a sync placement",
1517
+ },
1518
+ pica_sync_placements_cite: {
1519
+ category: "business",
1520
+ risk: "mutating",
1521
+ retry_safe: true,
1522
+ display_name: "attach evidence to a sync placement",
1523
+ },
1524
+ };
1525
+ /**
1526
+ * Look up metadata for a tool by name.
1527
+ * Returns undefined if the tool is not registered.
1528
+ */
1529
+ export function getToolMetadata(name) {
1530
+ return TOOL_METADATA[name];
1531
+ }
1532
+ //# sourceMappingURL=metadata.js.map