@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.
- package/.claude/settings.local.json +5 -0
- package/CHANGELOG.md +1850 -0
- package/README.md +304 -0
- package/assets/fonts/GeistSans-Light.woff2 +0 -0
- package/assets/fonts/InstrumentSerif-Italic.woff2 +0 -0
- package/assets/fonts/InstrumentSerif-Regular.woff2 +0 -0
- package/dist/apps/download.d.ts +2 -0
- package/dist/apps/download.d.ts.map +1 -0
- package/dist/apps/download.js +125 -0
- package/dist/apps/download.js.map +1 -0
- package/dist/apps/generated/shared-bundle.d.ts +5 -0
- package/dist/apps/generated/shared-bundle.d.ts.map +1 -0
- package/dist/apps/generated/shared-bundle.js +7 -0
- package/dist/apps/generated/shared-bundle.js.map +1 -0
- package/dist/apps/release.d.ts +2 -0
- package/dist/apps/release.d.ts.map +1 -0
- package/dist/apps/release.js +69 -0
- package/dist/apps/release.js.map +1 -0
- package/dist/apps/shared.d.ts +15 -0
- package/dist/apps/shared.d.ts.map +1 -0
- package/dist/apps/shared.js +480 -0
- package/dist/apps/shared.js.map +1 -0
- package/dist/apps/upload.d.ts +2 -0
- package/dist/apps/upload.d.ts.map +1 -0
- package/dist/apps/upload.js +280 -0
- package/dist/apps/upload.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/index.d.ts +86 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +645 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/agent-guide.d.ts +15 -0
- package/dist/resources/agent-guide.d.ts.map +1 -0
- package/dist/resources/agent-guide.js +284 -0
- package/dist/resources/agent-guide.js.map +1 -0
- package/dist/resources/index.d.ts +66 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +510 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/llms-primer.d.ts +2 -0
- package/dist/resources/llms-primer.d.ts.map +1 -0
- package/dist/resources/llms-primer.js +68 -0
- package/dist/resources/llms-primer.js.map +1 -0
- package/dist/resources/required-schemas.generated.d.ts +455 -0
- package/dist/resources/required-schemas.generated.d.ts.map +1 -0
- package/dist/resources/required-schemas.generated.js +1041 -0
- package/dist/resources/required-schemas.generated.js.map +1 -0
- package/dist/resources/required-schemas.source.d.ts +53 -0
- package/dist/resources/required-schemas.source.d.ts.map +1 -0
- package/dist/resources/required-schemas.source.js +493 -0
- package/dist/resources/required-schemas.source.js.map +1 -0
- package/dist/resources/welcome.d.ts +14 -0
- package/dist/resources/welcome.d.ts.map +1 -0
- package/dist/resources/welcome.js +26 -0
- package/dist/resources/welcome.js.map +1 -0
- package/dist/server-instructions.d.ts +60 -0
- package/dist/server-instructions.d.ts.map +1 -0
- package/dist/server-instructions.js +93 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +52 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +334 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/access-simulate.d.ts +23 -0
- package/dist/tools/access-simulate.d.ts.map +1 -0
- package/dist/tools/access-simulate.js +162 -0
- package/dist/tools/access-simulate.js.map +1 -0
- package/dist/tools/agent-identity.d.ts +36 -0
- package/dist/tools/agent-identity.d.ts.map +1 -0
- package/dist/tools/agent-identity.js +274 -0
- package/dist/tools/agent-identity.js.map +1 -0
- package/dist/tools/agreement-types.d.ts +27 -0
- package/dist/tools/agreement-types.d.ts.map +1 -0
- package/dist/tools/agreement-types.js +281 -0
- package/dist/tools/agreement-types.js.map +1 -0
- package/dist/tools/agreements.d.ts +20 -0
- package/dist/tools/agreements.d.ts.map +1 -0
- package/dist/tools/agreements.js +282 -0
- package/dist/tools/agreements.js.map +1 -0
- package/dist/tools/analytics.d.ts +20 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +130 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/app-tools.d.ts +15 -0
- package/dist/tools/app-tools.d.ts.map +1 -0
- package/dist/tools/app-tools.js +388 -0
- package/dist/tools/app-tools.js.map +1 -0
- package/dist/tools/assets.d.ts +25 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +454 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/audio-files.d.ts +20 -0
- package/dist/tools/audio-files.d.ts.map +1 -0
- package/dist/tools/audio-files.js +409 -0
- package/dist/tools/audio-files.js.map +1 -0
- package/dist/tools/audit.d.ts +19 -0
- package/dist/tools/audit.d.ts.map +1 -0
- package/dist/tools/audit.js +58 -0
- package/dist/tools/audit.js.map +1 -0
- package/dist/tools/auth.d.ts +22 -0
- package/dist/tools/auth.d.ts.map +1 -0
- package/dist/tools/auth.js +212 -0
- package/dist/tools/auth.js.map +1 -0
- package/dist/tools/bulk.d.ts +22 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +164 -0
- package/dist/tools/bulk.js.map +1 -0
- package/dist/tools/calendar.d.ts +15 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +68 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/collaborators.d.ts +21 -0
- package/dist/tools/collaborators.d.ts.map +1 -0
- package/dist/tools/collaborators.js +381 -0
- package/dist/tools/collaborators.js.map +1 -0
- package/dist/tools/comparisons.d.ts +22 -0
- package/dist/tools/comparisons.d.ts.map +1 -0
- package/dist/tools/comparisons.js +80 -0
- package/dist/tools/comparisons.js.map +1 -0
- package/dist/tools/credits.d.ts +39 -0
- package/dist/tools/credits.d.ts.map +1 -0
- package/dist/tools/credits.js +541 -0
- package/dist/tools/credits.js.map +1 -0
- package/dist/tools/custody-hints.d.ts +16 -0
- package/dist/tools/custody-hints.d.ts.map +1 -0
- package/dist/tools/custody-hints.js +27 -0
- package/dist/tools/custody-hints.js.map +1 -0
- package/dist/tools/custody.d.ts +38 -0
- package/dist/tools/custody.d.ts.map +1 -0
- package/dist/tools/custody.js +281 -0
- package/dist/tools/custody.js.map +1 -0
- package/dist/tools/dashboard.d.ts +22 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +258 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/directory.d.ts +15 -0
- package/dist/tools/directory.d.ts.map +1 -0
- package/dist/tools/directory.js +107 -0
- package/dist/tools/directory.js.map +1 -0
- package/dist/tools/discovery.d.ts +49 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +851 -0
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/disputes.d.ts +18 -0
- package/dist/tools/disputes.d.ts.map +1 -0
- package/dist/tools/disputes.js +62 -0
- package/dist/tools/disputes.js.map +1 -0
- package/dist/tools/documents.d.ts +15 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +37 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/duplicates.d.ts +25 -0
- package/dist/tools/duplicates.d.ts.map +1 -0
- package/dist/tools/duplicates.js +108 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +56 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +616 -0
- package/dist/tools/enrichment.js.map +1 -0
- package/dist/tools/exports.d.ts +19 -0
- package/dist/tools/exports.d.ts.map +1 -0
- package/dist/tools/exports.js +184 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/feedback.d.ts +22 -0
- package/dist/tools/feedback.d.ts.map +1 -0
- package/dist/tools/feedback.js +100 -0
- package/dist/tools/feedback.js.map +1 -0
- package/dist/tools/forbidden-keywords.d.ts +62 -0
- package/dist/tools/forbidden-keywords.d.ts.map +1 -0
- package/dist/tools/forbidden-keywords.js +99 -0
- package/dist/tools/forbidden-keywords.js.map +1 -0
- package/dist/tools/gap-hints.d.ts +53 -0
- package/dist/tools/gap-hints.d.ts.map +1 -0
- package/dist/tools/gap-hints.js +245 -0
- package/dist/tools/gap-hints.js.map +1 -0
- package/dist/tools/groups.d.ts +29 -0
- package/dist/tools/groups.d.ts.map +1 -0
- package/dist/tools/groups.js +186 -0
- package/dist/tools/groups.js.map +1 -0
- package/dist/tools/import-documents.d.ts +21 -0
- package/dist/tools/import-documents.d.ts.map +1 -0
- package/dist/tools/import-documents.js +206 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +31 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +610 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +293 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1182 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations.d.ts +19 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +120 -0
- package/dist/tools/integrations.js.map +1 -0
- package/dist/tools/labels.d.ts +20 -0
- package/dist/tools/labels.d.ts.map +1 -0
- package/dist/tools/labels.js +48 -0
- package/dist/tools/labels.js.map +1 -0
- package/dist/tools/licensing.d.ts +40 -0
- package/dist/tools/licensing.d.ts.map +1 -0
- package/dist/tools/licensing.js +436 -0
- package/dist/tools/licensing.js.map +1 -0
- package/dist/tools/memory.d.ts +21 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +120 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/metadata.d.ts +15 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +1532 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/multimedia.d.ts +19 -0
- package/dist/tools/multimedia.d.ts.map +1 -0
- package/dist/tools/multimedia.js +371 -0
- package/dist/tools/multimedia.js.map +1 -0
- package/dist/tools/my-reported-issues.d.ts +32 -0
- package/dist/tools/my-reported-issues.d.ts.map +1 -0
- package/dist/tools/my-reported-issues.js +123 -0
- package/dist/tools/my-reported-issues.js.map +1 -0
- package/dist/tools/notes.d.ts +21 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +115 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +28 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +417 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/onboarding.d.ts +24 -0
- package/dist/tools/onboarding.d.ts.map +1 -0
- package/dist/tools/onboarding.js +81 -0
- package/dist/tools/onboarding.js.map +1 -0
- package/dist/tools/people.d.ts +254 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +481 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/projects.d.ts +20 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +316 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/public-filter.d.ts +43 -0
- package/dist/tools/public-filter.d.ts.map +1 -0
- package/dist/tools/public-filter.js +356 -0
- package/dist/tools/public-filter.js.map +1 -0
- package/dist/tools/publishers.d.ts +30 -0
- package/dist/tools/publishers.d.ts.map +1 -0
- package/dist/tools/publishers.js +105 -0
- package/dist/tools/publishers.js.map +1 -0
- package/dist/tools/purchases.d.ts +27 -0
- package/dist/tools/purchases.d.ts.map +1 -0
- package/dist/tools/purchases.js +9 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recording-attribution-hints.d.ts +24 -0
- package/dist/tools/recording-attribution-hints.d.ts.map +1 -0
- package/dist/tools/recording-attribution-hints.js +27 -0
- package/dist/tools/recording-attribution-hints.js.map +1 -0
- package/dist/tools/recordings.d.ts +96 -0
- package/dist/tools/recordings.d.ts.map +1 -0
- package/dist/tools/recordings.js +564 -0
- package/dist/tools/recordings.js.map +1 -0
- package/dist/tools/recovery-hints.d.ts +40 -0
- package/dist/tools/recovery-hints.d.ts.map +1 -0
- package/dist/tools/recovery-hints.js +827 -0
- package/dist/tools/recovery-hints.js.map +1 -0
- package/dist/tools/release-rich.d.ts +31 -0
- package/dist/tools/release-rich.d.ts.map +1 -0
- package/dist/tools/release-rich.js +245 -0
- package/dist/tools/release-rich.js.map +1 -0
- package/dist/tools/releases.d.ts +36 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +649 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/report-issue.d.ts +21 -0
- package/dist/tools/report-issue.d.ts.map +1 -0
- package/dist/tools/report-issue.js +101 -0
- package/dist/tools/report-issue.js.map +1 -0
- package/dist/tools/royalties.d.ts +23 -0
- package/dist/tools/royalties.d.ts.map +1 -0
- package/dist/tools/royalties.js +262 -0
- package/dist/tools/royalties.js.map +1 -0
- package/dist/tools/search.d.ts +30 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +115 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/send.d.ts +17 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +188 -0
- package/dist/tools/send.js.map +1 -0
- package/dist/tools/sessions.d.ts +18 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +153 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/settings.d.ts +23 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +365 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/share-links.d.ts +22 -0
- package/dist/tools/share-links.d.ts.map +1 -0
- package/dist/tools/share-links.js +188 -0
- package/dist/tools/share-links.js.map +1 -0
- package/dist/tools/signup.d.ts +26 -0
- package/dist/tools/signup.d.ts.map +1 -0
- package/dist/tools/signup.js +266 -0
- package/dist/tools/signup.js.map +1 -0
- package/dist/tools/split-sheets.d.ts +25 -0
- package/dist/tools/split-sheets.d.ts.map +1 -0
- package/dist/tools/split-sheets.js +309 -0
- package/dist/tools/split-sheets.js.map +1 -0
- package/dist/tools/storage-config.d.ts +13 -0
- package/dist/tools/storage-config.d.ts.map +1 -0
- package/dist/tools/storage-config.js +245 -0
- package/dist/tools/storage-config.js.map +1 -0
- package/dist/tools/subscription.d.ts +60 -0
- package/dist/tools/subscription.d.ts.map +1 -0
- package/dist/tools/subscription.js +440 -0
- package/dist/tools/subscription.js.map +1 -0
- package/dist/tools/sync-placements.d.ts +31 -0
- package/dist/tools/sync-placements.d.ts.map +1 -0
- package/dist/tools/sync-placements.js +431 -0
- package/dist/tools/sync-placements.js.map +1 -0
- package/dist/tools/team.d.ts +22 -0
- package/dist/tools/team.d.ts.map +1 -0
- package/dist/tools/team.js +144 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/tools/telegram.d.ts +21 -0
- package/dist/tools/telegram.d.ts.map +1 -0
- package/dist/tools/telegram.js +144 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/tools/uploads.d.ts +17 -0
- package/dist/tools/uploads.d.ts.map +1 -0
- package/dist/tools/uploads.js +165 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +71 -0
- package/dist/tools/works.d.ts.map +1 -0
- package/dist/tools/works.js +694 -0
- package/dist/tools/works.js.map +1 -0
- package/package.json +54 -0
- package/scripts/build-required-schemas.ts +233 -0
- package/scripts/bundle-apps.ts +61 -0
- package/scripts/refresh-schema-mirror.ts +182 -0
- 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
|