@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,827 @@
1
+ // Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
2
+ export const RECOVERY_HINTS = {
3
+ // ── destructive tools ──
4
+ pica_works_delete: [
5
+ {
6
+ error_code: "NOT_FOUND",
7
+ suggestion: "search for the work by title",
8
+ next_tool: "pica_works_query",
9
+ },
10
+ {
11
+ error_code: "HAS_DEPENDENCIES",
12
+ suggestion: "check what's linked to this work first",
13
+ next_tool: "pica_works_inspect",
14
+ },
15
+ ],
16
+ pica_works_bulk_delete: [
17
+ {
18
+ error_code: "PARTIAL_NOT_FOUND",
19
+ suggestion: "some IDs not found — list your works to verify",
20
+ next_tool: "pica_works_query",
21
+ },
22
+ ],
23
+ pica_people_delete: [
24
+ {
25
+ error_code: "NOT_FOUND",
26
+ suggestion: "search for the person by name",
27
+ next_tool: "pica_people_query",
28
+ },
29
+ {
30
+ error_code: "PERSON_HAS_CREDITS",
31
+ suggestion: "check their credits before removing",
32
+ next_tool: "pica_people_inspect",
33
+ },
34
+ ],
35
+ pica_recordings_delete: [
36
+ {
37
+ error_code: "NOT_FOUND",
38
+ suggestion: "list recordings for this work",
39
+ next_tool: "pica_recordings_query",
40
+ },
41
+ ],
42
+ pica_agreements_delete: [
43
+ {
44
+ error_code: "NOT_FOUND",
45
+ suggestion: "list your agreements to find the right one",
46
+ next_tool: "pica_agreements_query",
47
+ },
48
+ {
49
+ error_code: "HAS_LINKED_WORKS",
50
+ suggestion: "check what works are linked",
51
+ next_tool: "pica_agreements_inspect",
52
+ },
53
+ ],
54
+ pica_projects_delete: [
55
+ {
56
+ error_code: "NOT_FOUND",
57
+ suggestion: "list your projects",
58
+ next_tool: "pica_projects_list",
59
+ },
60
+ ],
61
+ pica_merge_duplicates: [
62
+ {
63
+ error_code: "ENTITY_NOT_FOUND",
64
+ suggestion: "check both entities exist",
65
+ next_tool: "pica_find_duplicates",
66
+ },
67
+ {
68
+ error_code: "MERGE_CONFLICT",
69
+ suggestion: "compare the entities first",
70
+ next_tool: "pica_enrichment_compare",
71
+ },
72
+ ],
73
+ pica_team_remove: [
74
+ {
75
+ error_code: "CANNOT_REMOVE_OWNER",
76
+ suggestion: "check team roles",
77
+ next_tool: "pica_team_list",
78
+ },
79
+ {
80
+ error_code: "NOT_FOUND",
81
+ suggestion: "list team members",
82
+ next_tool: "pica_team_list",
83
+ },
84
+ ],
85
+ pica_notes_delete: [
86
+ {
87
+ error_code: "NOT_FOUND",
88
+ suggestion: "list your notes",
89
+ next_tool: "pica_notes_list",
90
+ },
91
+ ],
92
+ pica_memory_delete: [
93
+ {
94
+ error_code: "NOT_FOUND",
95
+ suggestion: "list your memories",
96
+ next_tool: "pica_memory_list",
97
+ },
98
+ ],
99
+ pica_physical_assets_delete: [
100
+ {
101
+ error_code: "NOT_FOUND",
102
+ suggestion: "list your assets",
103
+ next_tool: "pica_physical_assets_query",
104
+ },
105
+ ],
106
+ pica_agreement_templates_delete: [
107
+ {
108
+ error_code: "NOT_FOUND",
109
+ suggestion: "list your agreement templates",
110
+ next_tool: "pica_agreement_templates_list",
111
+ },
112
+ ],
113
+ pica_producer_agreements_delete: [
114
+ {
115
+ error_code: "NOT_FOUND",
116
+ suggestion: "list your producer agreements",
117
+ next_tool: "pica_producer_agreements_list",
118
+ },
119
+ ],
120
+ pica_work_for_hire_delete: [
121
+ {
122
+ error_code: "NOT_FOUND",
123
+ suggestion: "list your work-for-hire agreements",
124
+ next_tool: "pica_work_for_hire_list",
125
+ },
126
+ ],
127
+ // ── enrichment tools ──
128
+ //
129
+ // ADR-154 F13 (2026-04-21): the seven per-source `pica_enrich_work_*`
130
+ // and `pica_people_enrich_*` tools have been removed — their
131
+ // per-error hints lived here and were removed with them. The
132
+ // outcome-shaped resolvers `pica_resolve_work` / `pica_resolve_person`
133
+ // own the recovery surface now; NO_MATCH per source is returned in
134
+ // the structured `errors[]` receipt instead of via a tool-scoped hint.
135
+ // pica_resolve_work CREDIT_INSUFFICIENT hint dropped 2026-04-22 — the only
136
+ // hint it carried pointed at pica_credits_balance, which no longer exists
137
+ // (billing model is subscription). The resolver's own error receipt is
138
+ // authoritative. See docs/MCP_REFINEMENT_LOG.md entry B-001.
139
+ // ── mutating tools ──
140
+ pica_works_create: [
141
+ {
142
+ error_code: "DUPLICATE_WORK",
143
+ suggestion: "a similar work already exists — search first",
144
+ next_tool: "pica_works_query",
145
+ },
146
+ ],
147
+ pica_works_update: [
148
+ {
149
+ error_code: "NOT_FOUND",
150
+ suggestion: "search for the work by title first",
151
+ next_tool: "pica_works_query",
152
+ },
153
+ {
154
+ error_code: "VALIDATION_ERROR",
155
+ suggestion: "inspect the work to see the current shape",
156
+ next_tool: "pica_works_inspect",
157
+ },
158
+ ],
159
+ pica_works_bulk_update: [
160
+ {
161
+ error_code: "PARTIAL_NOT_FOUND",
162
+ suggestion: "some work IDs not found — list works to verify",
163
+ next_tool: "pica_works_query",
164
+ },
165
+ {
166
+ error_code: "VALIDATION_ERROR",
167
+ suggestion: "inspect a sample work to see which fields are accepted",
168
+ next_tool: "pica_works_inspect",
169
+ },
170
+ ],
171
+ pica_people_create: [
172
+ {
173
+ error_code: "DUPLICATE_PERSON",
174
+ suggestion: "a similar person already exists — search first",
175
+ next_tool: "pica_people_query",
176
+ },
177
+ ],
178
+ pica_people_update: [
179
+ {
180
+ error_code: "NOT_FOUND",
181
+ suggestion: "search for the person by name first",
182
+ next_tool: "pica_people_query",
183
+ },
184
+ ],
185
+ pica_people_bulk_update_roles: [
186
+ {
187
+ error_code: "PARTIAL_NOT_FOUND",
188
+ suggestion: "some person IDs not found — list people to verify",
189
+ next_tool: "pica_people_query",
190
+ },
191
+ ],
192
+ pica_recordings_update: [
193
+ {
194
+ error_code: "NOT_FOUND",
195
+ suggestion: "list recordings to find the right id",
196
+ next_tool: "pica_recordings_query",
197
+ },
198
+ ],
199
+ pica_credits_update: [
200
+ {
201
+ error_code: "SPLITS_NOT_100",
202
+ suggestion: "credit splits must total 100% — check current splits",
203
+ next_tool: "pica_credits_list",
204
+ },
205
+ {
206
+ error_code: "PERSON_NOT_FOUND",
207
+ suggestion: "person not in catalog — create them first",
208
+ next_tool: "pica_people_create",
209
+ },
210
+ ],
211
+ pica_recording_credits_update: [
212
+ {
213
+ error_code: "RECORDING_NOT_FOUND",
214
+ suggestion: "list recordings to find the right id",
215
+ next_tool: "pica_recordings_query",
216
+ },
217
+ {
218
+ error_code: "PERSON_NOT_FOUND",
219
+ suggestion: "person not in catalog — create them first",
220
+ next_tool: "pica_people_create",
221
+ },
222
+ ],
223
+ pica_recording_splits_create: [
224
+ {
225
+ error_code: "RECORDING_NOT_FOUND",
226
+ suggestion: "list recordings to find the right id",
227
+ next_tool: "pica_recordings_query",
228
+ },
229
+ {
230
+ error_code: "SPLITS_NOT_100",
231
+ suggestion: "splits must total 100% — inspect existing splits first",
232
+ next_tool: "pica_recordings_inspect",
233
+ },
234
+ ],
235
+ pica_split_sheet_generate: [
236
+ {
237
+ error_code: "SPLITS_NOT_100",
238
+ suggestion: "fix credits before generating split sheet",
239
+ next_tool: "pica_credits_update",
240
+ },
241
+ ],
242
+ pica_import_execute: [
243
+ {
244
+ error_code: "VALIDATION_ERROR",
245
+ suggestion: "validate the import first to see row-level issues",
246
+ next_tool: "pica_import_validate",
247
+ },
248
+ ],
249
+ pica_import_from_spotify: [
250
+ {
251
+ error_code: "INVALID_URI",
252
+ suggestion: "search for the artist or track first to find a valid Spotify URI",
253
+ next_tool: "pica_search_all",
254
+ },
255
+ ],
256
+ pica_import_streaming_link: [
257
+ {
258
+ error_code: "INVALID_URI",
259
+ suggestion: "search for the artist or track first to find a valid streaming URI",
260
+ next_tool: "pica_search_all",
261
+ },
262
+ ],
263
+ pica_import_youtube_link: [
264
+ {
265
+ error_code: "INVALID_URI",
266
+ suggestion: "search for the artist or track first to find a valid YouTube link",
267
+ next_tool: "pica_search_all",
268
+ },
269
+ ],
270
+ // CREDIT_INSUFFICIENT hints for pica_export_song_registration /
271
+ // pica_export_catalog_asset_report / pica_audio_analyze dropped 2026-04-22 —
272
+ // all pointed at pica_credits_balance, which no longer exists.
273
+ // See docs/MCP_REFINEMENT_LOG.md entry B-001.
274
+ pica_audio_identify: [
275
+ {
276
+ error_code: "NO_MATCH",
277
+ suggestion: "no fingerprint match — enter metadata manually",
278
+ next_tool: "pica_works_update",
279
+ },
280
+ ],
281
+ pica_notify_person: [
282
+ {
283
+ error_code: "NOT_PICA_USER",
284
+ suggestion: "person isn't on PICA — invite them first",
285
+ next_tool: "pica_collaborators_invite",
286
+ },
287
+ ],
288
+ pica_recordings_create: [
289
+ {
290
+ error_code: "DUPLICATE_ISRC",
291
+ suggestion: "recording with this ISRC already exists",
292
+ next_tool: "pica_recordings_query",
293
+ },
294
+ ],
295
+ // ── agreements stack ──
296
+ pica_agreements_create: [
297
+ {
298
+ error_code: "MISSING_COUNTERPARTY",
299
+ suggestion: "look up the counterparty org by name to get its UUID",
300
+ next_tool: "pica_search_all",
301
+ },
302
+ ],
303
+ pica_agreements_update: [
304
+ {
305
+ error_code: "NOT_FOUND",
306
+ suggestion: "list your agreements to find the right id",
307
+ next_tool: "pica_agreements_query",
308
+ },
309
+ ],
310
+ pica_agreements_link_work: [
311
+ {
312
+ error_code: "AGREEMENT_NOT_FOUND",
313
+ suggestion: "list your agreements first",
314
+ next_tool: "pica_agreements_query",
315
+ },
316
+ {
317
+ error_code: "WORK_NOT_FOUND",
318
+ suggestion: "search for the work by title",
319
+ next_tool: "pica_works_query",
320
+ },
321
+ ],
322
+ pica_agreement_templates_duplicate: [
323
+ {
324
+ error_code: "NOT_FOUND",
325
+ suggestion: "list your agreement templates to find the right id",
326
+ next_tool: "pica_agreement_templates_list",
327
+ },
328
+ ],
329
+ pica_agreement_templates_set_default: [
330
+ {
331
+ error_code: "NOT_FOUND",
332
+ suggestion: "list your agreement templates to find the right id",
333
+ next_tool: "pica_agreement_templates_list",
334
+ },
335
+ ],
336
+ // ── releases ──
337
+ pica_releases_create: [
338
+ {
339
+ error_code: "DUPLICATE_RELEASE",
340
+ suggestion: "a release with this title or UPC already exists",
341
+ next_tool: "pica_releases_list",
342
+ },
343
+ ],
344
+ pica_releases_create_with_tracks: [
345
+ {
346
+ error_code: "DUPLICATE_RELEASE",
347
+ suggestion: "a release with this title or UPC already exists",
348
+ next_tool: "pica_releases_list",
349
+ },
350
+ {
351
+ error_code: "RECORDING_NOT_FOUND",
352
+ suggestion: "one or more track recording IDs not found",
353
+ next_tool: "pica_recordings_query",
354
+ },
355
+ ],
356
+ pica_releases_update: [
357
+ {
358
+ error_code: "NOT_FOUND",
359
+ suggestion: "list releases to find the right id",
360
+ next_tool: "pica_releases_list",
361
+ },
362
+ ],
363
+ pica_releases_attach_track: [
364
+ {
365
+ error_code: "RELEASE_NOT_FOUND",
366
+ suggestion: "list releases to find the right id",
367
+ next_tool: "pica_releases_list",
368
+ },
369
+ {
370
+ error_code: "RECORDING_NOT_FOUND",
371
+ suggestion: "search recordings to find the track",
372
+ next_tool: "pica_recordings_query",
373
+ },
374
+ ],
375
+ pica_releases_attach_track_by_identifier: [
376
+ {
377
+ error_code: "NO_MATCH",
378
+ suggestion: "no recording matched the identifier — import from streaming first",
379
+ next_tool: "pica_import_streaming_link",
380
+ },
381
+ ],
382
+ pica_releases_attach_recording_with_work: [
383
+ {
384
+ error_code: "RELEASE_NOT_FOUND",
385
+ suggestion: "list releases to find the right id",
386
+ next_tool: "pica_releases_list",
387
+ },
388
+ {
389
+ error_code: "RECORDING_NOT_FOUND",
390
+ suggestion: "search recordings to find the track",
391
+ next_tool: "pica_recordings_query",
392
+ },
393
+ ],
394
+ pica_releases_bulk_attach_tracks: [
395
+ {
396
+ error_code: "RELEASE_NOT_FOUND",
397
+ suggestion: "list releases to find the right id",
398
+ next_tool: "pica_releases_list",
399
+ },
400
+ {
401
+ error_code: "PARTIAL_NOT_FOUND",
402
+ suggestion: "some recording IDs not found — verify the track list",
403
+ next_tool: "pica_recordings_query",
404
+ },
405
+ ],
406
+ pica_releases_detach_track: [
407
+ {
408
+ error_code: "NOT_FOUND",
409
+ suggestion: "list the tracks on this release",
410
+ next_tool: "pica_releases_list_tracks",
411
+ },
412
+ ],
413
+ pica_releases_move_track: [
414
+ {
415
+ error_code: "NOT_FOUND",
416
+ suggestion: "list the tracks on this release",
417
+ next_tool: "pica_releases_list_tracks",
418
+ },
419
+ ],
420
+ pica_releases_reorder_tracks: [
421
+ {
422
+ error_code: "NOT_FOUND",
423
+ suggestion: "list the tracks on this release to see the current order",
424
+ next_tool: "pica_releases_list_tracks",
425
+ },
426
+ ],
427
+ // ── projects ──
428
+ pica_projects_create: [
429
+ {
430
+ error_code: "DUPLICATE_PROJECT",
431
+ suggestion: "a project with this name already exists",
432
+ next_tool: "pica_projects_list",
433
+ },
434
+ ],
435
+ pica_projects_update: [
436
+ {
437
+ error_code: "NOT_FOUND",
438
+ suggestion: "list your projects to find the right id",
439
+ next_tool: "pica_projects_list",
440
+ },
441
+ ],
442
+ pica_projects_attach_works: [
443
+ {
444
+ error_code: "PROJECT_NOT_FOUND",
445
+ suggestion: "list your projects to find the right id",
446
+ next_tool: "pica_projects_list",
447
+ },
448
+ {
449
+ error_code: "PARTIAL_NOT_FOUND",
450
+ suggestion: "some work IDs not found — search by title",
451
+ next_tool: "pica_works_query",
452
+ },
453
+ ],
454
+ // ── custody ──
455
+ pica_custody_claim: [
456
+ {
457
+ error_code: "ALREADY_CLAIMED",
458
+ suggestion: "see the existing custody history for this entity",
459
+ next_tool: "pica_custody_history",
460
+ },
461
+ {
462
+ error_code: "ENTITY_NOT_FOUND",
463
+ suggestion: "search for the work or recording first",
464
+ next_tool: "pica_search_all",
465
+ },
466
+ ],
467
+ pica_custody_respond: [
468
+ {
469
+ error_code: "NOT_FOUND",
470
+ suggestion: "list pending custody claims",
471
+ next_tool: "pica_custody_list",
472
+ },
473
+ ],
474
+ pica_custody_reconcile: [
475
+ {
476
+ error_code: "NOT_FOUND",
477
+ suggestion: "see the custody history for this entity",
478
+ next_tool: "pica_custody_history",
479
+ },
480
+ ],
481
+ pica_claim_credit: [
482
+ {
483
+ error_code: "NOT_FOUND",
484
+ suggestion: "list pending discoveries to find the right id",
485
+ next_tool: "pica_discoveries_query",
486
+ },
487
+ ],
488
+ pica_claim_custody: [
489
+ {
490
+ error_code: "NOT_FOUND",
491
+ suggestion: "list pending discoveries to find the right id",
492
+ next_tool: "pica_discoveries_query",
493
+ },
494
+ ],
495
+ pica_claim_artist: [
496
+ {
497
+ error_code: "NOT_FOUND",
498
+ suggestion: "list pending discoveries to find the right id",
499
+ next_tool: "pica_discoveries_query",
500
+ },
501
+ ],
502
+ // ── enrichment proposals ──
503
+ pica_enrichment_proposal_apply: [
504
+ {
505
+ error_code: "NOT_FOUND",
506
+ suggestion: "list pending enrichment proposals",
507
+ next_tool: "pica_enrichment_proposals_list",
508
+ },
509
+ {
510
+ error_code: "DRIFT_DETECTED",
511
+ suggestion: "the entity changed since the proposal was created — review conflicts and retry with force=true",
512
+ next_tool: "pica_works_inspect",
513
+ },
514
+ ],
515
+ pica_enrichment_proposal_reject: [
516
+ {
517
+ error_code: "NOT_FOUND",
518
+ suggestion: "list pending enrichment proposals",
519
+ next_tool: "pica_enrichment_proposals_list",
520
+ },
521
+ ],
522
+ // ── multimedia ──
523
+ pica_multimedia_link_work: [
524
+ {
525
+ error_code: "WORK_NOT_FOUND",
526
+ suggestion: "search for the work by title",
527
+ next_tool: "pica_works_query",
528
+ },
529
+ {
530
+ error_code: "MULTIMEDIA_NOT_FOUND",
531
+ suggestion: "search multimedia to find the right id",
532
+ next_tool: "pica_multimedia_search",
533
+ },
534
+ ],
535
+ pica_multimedia_link_youtube: [
536
+ {
537
+ error_code: "WORK_NOT_FOUND",
538
+ suggestion: "search for the work by title",
539
+ next_tool: "pica_works_query",
540
+ },
541
+ ],
542
+ // ── physical assets ──
543
+ pica_physical_assets_create: [
544
+ {
545
+ error_code: "DUPLICATE_ASSET",
546
+ suggestion: "a similar asset already exists",
547
+ next_tool: "pica_physical_assets_query",
548
+ },
549
+ ],
550
+ pica_physical_assets_update: [
551
+ {
552
+ error_code: "NOT_FOUND",
553
+ suggestion: "list your assets to find the right id",
554
+ next_tool: "pica_physical_assets_query",
555
+ },
556
+ ],
557
+ pica_physical_assets_link_work: [
558
+ {
559
+ error_code: "ASSET_NOT_FOUND",
560
+ suggestion: "list your assets to find the right id",
561
+ next_tool: "pica_physical_assets_query",
562
+ },
563
+ {
564
+ error_code: "WORK_NOT_FOUND",
565
+ suggestion: "search for the work by title",
566
+ next_tool: "pica_works_query",
567
+ },
568
+ ],
569
+ pica_physical_assets_link_recording: [
570
+ {
571
+ error_code: "ASSET_NOT_FOUND",
572
+ suggestion: "list your assets to find the right id",
573
+ next_tool: "pica_physical_assets_query",
574
+ },
575
+ {
576
+ error_code: "RECORDING_NOT_FOUND",
577
+ suggestion: "search recordings to find the right id",
578
+ next_tool: "pica_recordings_query",
579
+ },
580
+ ],
581
+ pica_physical_assets_unlink_work: [
582
+ {
583
+ error_code: "NOT_FOUND",
584
+ suggestion: "inspect the asset to see what's currently linked",
585
+ next_tool: "pica_physical_assets_inspect",
586
+ },
587
+ ],
588
+ pica_physical_assets_unlink_recording: [
589
+ {
590
+ error_code: "NOT_FOUND",
591
+ suggestion: "inspect the asset to see what's currently linked",
592
+ next_tool: "pica_physical_assets_inspect",
593
+ },
594
+ ],
595
+ // ── publishers ──
596
+ pica_publishers_create: [
597
+ {
598
+ error_code: "DUPLICATE_PUBLISHER",
599
+ suggestion: "a publisher with this name already exists",
600
+ next_tool: "pica_publishers_query",
601
+ },
602
+ ],
603
+ // ── collaborators ──
604
+ pica_collaborators_invite: [
605
+ {
606
+ error_code: "WORK_NOT_FOUND",
607
+ suggestion: "search for the work by title first",
608
+ next_tool: "pica_works_query",
609
+ },
610
+ {
611
+ error_code: "DUPLICATE_INVITE",
612
+ suggestion: "an invite to this email already exists for this work",
613
+ next_tool: "pica_collaborators_invites_list",
614
+ },
615
+ ],
616
+ pica_collaborators_accept: [
617
+ {
618
+ error_code: "NOT_FOUND",
619
+ suggestion: "list incoming invites to find the right id",
620
+ next_tool: "pica_collaborators_incoming_list",
621
+ },
622
+ ],
623
+ pica_collaborators_dispute: [
624
+ {
625
+ error_code: "NOT_FOUND",
626
+ suggestion: "list incoming invites to find the right id",
627
+ next_tool: "pica_collaborators_incoming_list",
628
+ },
629
+ ],
630
+ pica_collaborators_invite_resend: [
631
+ {
632
+ error_code: "NOT_FOUND",
633
+ suggestion: "list outgoing invites to find the right id",
634
+ next_tool: "pica_collaborators_invites_list",
635
+ },
636
+ ],
637
+ // ── agent identity / grants ──
638
+ pica_revoke_agent_grant: [
639
+ {
640
+ error_code: "NOT_FOUND",
641
+ suggestion: "list your active agent grants",
642
+ next_tool: "pica_list_my_agent_grants",
643
+ },
644
+ ],
645
+ // ── team ──
646
+ pica_team_update_role: [
647
+ {
648
+ error_code: "NOT_FOUND",
649
+ suggestion: "list team members to find the right id",
650
+ next_tool: "pica_team_list",
651
+ },
652
+ ],
653
+ // ── groups (member relationships on people, ADR-223) ──
654
+ pica_group_add_member: [
655
+ {
656
+ error_code: "GROUP_NOT_FOUND",
657
+ suggestion: "search people for the group person record",
658
+ next_tool: "pica_people_query",
659
+ },
660
+ {
661
+ error_code: "ALREADY_MEMBER",
662
+ suggestion: "list members to see the existing membership",
663
+ next_tool: "pica_group_list_members",
664
+ },
665
+ ],
666
+ pica_group_remove_member: [
667
+ {
668
+ error_code: "NOT_FOUND",
669
+ suggestion: "list members of this group to find active rows",
670
+ next_tool: "pica_group_list_members",
671
+ },
672
+ ],
673
+ // ── ADR-222 sync placements ──
674
+ pica_sync_placements_inspect: [
675
+ {
676
+ error_code: "NOT_FOUND",
677
+ suggestion: "placement id may be wrong — list the org's placements",
678
+ next_tool: "pica_sync_placements_query",
679
+ },
680
+ ],
681
+ pica_sync_placements_create: [
682
+ {
683
+ error_code: "MISSING_CONTACT",
684
+ suggestion: "at least one contact is required — find existing people or supply a person_name to auto-create",
685
+ next_tool: "pica_people_query",
686
+ },
687
+ {
688
+ error_code: "INVALID_WORK",
689
+ suggestion: "the work_id is invalid or not in this org's catalog",
690
+ next_tool: "pica_works_query",
691
+ },
692
+ ],
693
+ pica_sync_placements_update: [
694
+ {
695
+ error_code: "OPERATOR_REQUIRED",
696
+ suggestion: "this field is operator-only — for self-service retirement use status:'terminated' instead",
697
+ next_tool: "pica_sync_placements_update",
698
+ },
699
+ {
700
+ error_code: "EVIDENCE_REQUIRED",
701
+ suggestion: "operator_verified needs at least one document of type sync_contract / cue_sheet / invoice / airing_proof — attach evidence first",
702
+ next_tool: "pica_documents_create",
703
+ },
704
+ {
705
+ error_code: "INVALID_TRANSITION",
706
+ suggestion: "this status transition is not allowed by the placement state machine — inspect to see the current status and valid next states",
707
+ next_tool: "pica_sync_placements_inspect",
708
+ },
709
+ ],
710
+ pica_sync_placements_delete: [
711
+ {
712
+ error_code: "OPERATOR_REQUIRED",
713
+ suggestion: "delete is operator-only — for self-service use update with status:'terminated' (soft-delete)",
714
+ next_tool: "pica_sync_placements_update",
715
+ },
716
+ {
717
+ error_code: "NOT_FOUND",
718
+ suggestion: "placement id may be wrong — list the org's placements",
719
+ next_tool: "pica_sync_placements_query",
720
+ },
721
+ ],
722
+ pica_sync_placements_cite: [
723
+ {
724
+ error_code: "NOT_FOUND",
725
+ suggestion: "placement id may be wrong — list the org's placements",
726
+ next_tool: "pica_sync_placements_query",
727
+ },
728
+ {
729
+ error_code: "VALIDATION_ERROR",
730
+ suggestion: "inspect the placement to see the source schema and required fields before retrying",
731
+ next_tool: "pica_sync_placements_inspect",
732
+ },
733
+ ],
734
+ };
735
+ /**
736
+ * Tools that are intentionally NOT in `RECOVERY_HINTS` despite being
737
+ * `mutating` or `destructive`. Read by the lint at
738
+ * `scripts/lint-mcp-tools.ts` (ADR-180 Rule 10) — every mutating/
739
+ * destructive tool must either appear in `RECOVERY_HINTS` or here.
740
+ *
741
+ * Three buckets:
742
+ *
743
+ * `rich_response`: returns a structured response shape that already
744
+ * carries the "what next" affordance. The resolver tools populate
745
+ * `recovery_hints: string[]` on the response itself; import/export
746
+ * tools return a structured download envelope; cascade runners are
747
+ * fire-and-forget; the upload pair returns presigned-URL state.
748
+ *
749
+ * `terminal`: no plausible recovery. One-shot tools, idempotent acks,
750
+ * or validation-only writes whose only failure mode is a clear schema
751
+ * error the agent can fix from the error message alone.
752
+ *
753
+ * `dispatcher`: discriminated-branch tool that is a renaming candidate
754
+ * per the agreement-types audit. Adding hints to the dispatcher would
755
+ * be wasted work if the tools split.
756
+ *
757
+ * If a tool is added to `RECOVERY_HINTS`, remove it from here. The lint
758
+ * emits a stale-skip warning when both are populated for the same tool.
759
+ */
760
+ export const INTENTIONALLY_SKIPPED = new Map([
761
+ // rich_response
762
+ ["pica_resolve_work", "rich_response"],
763
+ ["pica_resolve_person", "rich_response"],
764
+ ["pica_resolve_recording", "rich_response"],
765
+ ["pica_run_work_cascade", "rich_response"],
766
+ ["pica_run_person_cascade", "rich_response"],
767
+ ["pica_audio_analyze", "rich_response"],
768
+ ["pica_audio_complete_upload", "rich_response"],
769
+ ["pica_audio_presigned_upload", "rich_response"],
770
+ ["pica_documents_analyse", "rich_response"],
771
+ ["pica_enrichment_propose", "rich_response"],
772
+ ["pica_export_ai_consent", "rich_response"],
773
+ ["pica_export_catalog_asset_report", "rich_response"],
774
+ ["pica_export_industry_ready", "rich_response"],
775
+ ["pica_export_my_data", "rich_response"],
776
+ ["pica_export_song_registration", "rich_response"],
777
+ ["pica_ingest_statement", "rich_response"],
778
+ ["pica_report_issue", "rich_response"],
779
+ ["pica_send_message", "rich_response"],
780
+ ["pica_send_resend", "rich_response"],
781
+ ["pica_subscription_manage", "rich_response"],
782
+ ["pica_upload_complete", "rich_response"],
783
+ ["pica_upload_file", "rich_response"],
784
+ ["pica_collaborators_invite_bulk", "rich_response"],
785
+ ["pica_discoveries_review", "rich_response"],
786
+ ["pica_multimedia_create", "rich_response"],
787
+ ["pica_multimedia_import_url", "rich_response"],
788
+ // terminal
789
+ ["pica_acknowledge_onboarding", "terminal"],
790
+ ["pica_delete_my_account", "terminal"],
791
+ ["pica_notification_acknowledge", "terminal"],
792
+ ["pica_notifications_mark_read", "terminal"],
793
+ ["pica_notify_user", "terminal"],
794
+ ["pica_notify_user_at", "terminal"],
795
+ ["pica_notify_user_cancel", "terminal"],
796
+ ["pica_provenance_certificate", "terminal"],
797
+ ["pica_sessions_create", "terminal"],
798
+ ["pica_share_links_create", "terminal"],
799
+ ["pica_share_links_delete", "terminal"],
800
+ ["pica_share_links_update", "terminal"],
801
+ ["pica_split_sheet_send", "terminal"],
802
+ ["pica_storage_disconnect", "terminal"],
803
+ ["pica_submit_feedback", "terminal"],
804
+ ["pica_submit_license_enquiry", "terminal"],
805
+ ["pica_telegram_connect", "terminal"],
806
+ ["pica_update_license_enquiry_status", "terminal"],
807
+ ["pica_update_my_identity", "terminal"],
808
+ ["pica_update_organisation_profile", "terminal"],
809
+ ["pica_update_privacy_settings", "terminal"],
810
+ ["pica_works_verify", "terminal"],
811
+ ["pica_memory_save", "terminal"],
812
+ ["pica_notes_create", "terminal"],
813
+ ["pica_team_invite", "terminal"],
814
+ ["pica_create_agent_identity", "terminal"],
815
+ ["pica_issue_agent_grant", "terminal"],
816
+ // dispatcher
817
+ ["pica_agreement_types_create", "dispatcher"],
818
+ ["pica_agreement_types_update", "dispatcher"],
819
+ ["pica_agreement_types_delete", "dispatcher"],
820
+ ]);
821
+ export function getRecoveryHint(toolName, errorCode) {
822
+ const hints = RECOVERY_HINTS[toolName];
823
+ if (!hints)
824
+ return undefined;
825
+ return hints.find((h) => h.error_code === errorCode);
826
+ }
827
+ //# sourceMappingURL=recovery-hints.js.map