@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,455 @@
|
|
|
1
|
+
export declare const REQUIRED_SCHEMAS: {
|
|
2
|
+
readonly "agreement-required": {
|
|
3
|
+
readonly workflow: "agreement-required";
|
|
4
|
+
readonly summary: "Required fields to create an agreement, then attach works and (optionally) render from a template.";
|
|
5
|
+
readonly primary_tool: "pica_agreements_create";
|
|
6
|
+
readonly primary_required: readonly ["title", "agreement_type", "other_party_name"];
|
|
7
|
+
readonly primary_recommended: readonly ["id", "other_party_type", "description", "notes", "tags", "agreement_category", "status", "signing_date", "start_date", "end_date", "expires_at", "renewal_date", "termination_date", "counterparty_org_id", "counterparty_email", "advance_amount", "advance_currency", "is_recoupable", "financial_terms", "agreement_terms", "termination_notice_period_days", "include_future_works"];
|
|
8
|
+
readonly enums: {
|
|
9
|
+
readonly agreement_type: readonly ["admin_only", "artist_contract", "co_publishing", "distribution", "library_music", "master_recording", "other", "production", "publishing_admin", "report", "sub_publishing", "termination"];
|
|
10
|
+
readonly other_party_type: readonly ["artist", "individual", "label", "music_library", "other", "production_company", "publisher"];
|
|
11
|
+
readonly status: readonly ["active", "cancelled", "completed", "draft", "expired", "fully_executed", "partially_signed", "pending_signature", "terminated", "unknown"];
|
|
12
|
+
};
|
|
13
|
+
readonly companion_calls: readonly [{
|
|
14
|
+
readonly tool: "pica_agreements_update";
|
|
15
|
+
readonly when: "After creation — to amend any inline field. Status changes trigger notifications; counterparty_org_id changes require the linked-org check at the route layer.";
|
|
16
|
+
readonly required: readonly ["id"];
|
|
17
|
+
}, {
|
|
18
|
+
readonly tool: "pica_agreements_link_work";
|
|
19
|
+
readonly when: "Attach a work to the agreement. Optionally set a royalty split percentage per work.";
|
|
20
|
+
readonly required: readonly ["agreement_id", "work_id"];
|
|
21
|
+
}, {
|
|
22
|
+
readonly tool: "pica_agreement_templates_render";
|
|
23
|
+
readonly when: "Template-driven flow — fill an agreement template with catalog data (work_id + people_ids) before creating the agreement row.";
|
|
24
|
+
readonly required: readonly ["id"];
|
|
25
|
+
}];
|
|
26
|
+
readonly example: {
|
|
27
|
+
readonly title: "Songwriter Admin Deal — Midnight Rivers";
|
|
28
|
+
readonly agreement_type: "publishing_admin";
|
|
29
|
+
readonly other_party_name: "Indigo Music Publishing Ltd.";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
readonly "audio-upload-required": {
|
|
33
|
+
readonly workflow: "audio-upload-required";
|
|
34
|
+
readonly summary: "Three-step chain to add an audio master / stem / version to the catalog: presign → PUT → finalize, then optional async analyze + poll.";
|
|
35
|
+
readonly primary_tool: "pica_audio_presigned_upload";
|
|
36
|
+
readonly primary_required: readonly ["filename", "content_type", "file_size"];
|
|
37
|
+
readonly primary_recommended: readonly ["work_id", "title", "file_type"];
|
|
38
|
+
readonly enums: {
|
|
39
|
+
readonly file_type: readonly ["demo", "instrumental", "master", "stem", "version"];
|
|
40
|
+
readonly classification: readonly ["composition", "demo", "drum_pack", "loop", "other", "released_song", "sample", "stem", "unreleased_song"];
|
|
41
|
+
};
|
|
42
|
+
readonly companion_calls: readonly [{
|
|
43
|
+
readonly tool: "pica_audio_complete_upload";
|
|
44
|
+
readonly when: "Step 2 — after the uploader PUTs the file to the signed URL returned by step 1. Finalizes the upload, writes the audio_files row, and (optionally) links or auto-creates a recording for master files.";
|
|
45
|
+
readonly required: readonly ["upload_id", "key", "bucket", "filename", "content_type", "file_size"];
|
|
46
|
+
}, {
|
|
47
|
+
readonly tool: "pica_audio_analyze";
|
|
48
|
+
readonly when: "Step 3 (optional, async). Triggers BPM / key / mood feature extraction (Librosa) and lyrics transcription (Whisper). Each side bills 1 credit. Does not auto-run on complete_upload — explicit call required.";
|
|
49
|
+
readonly required: readonly ["id"];
|
|
50
|
+
}, {
|
|
51
|
+
readonly tool: "pica_audio_inspect";
|
|
52
|
+
readonly when: "Step 4 (poll). Call with sections: ['analysis', 'status'] until the analysis job reports complete. Lyrics transcripts land on the analysis row, not works.lyrics — copy is a separate step.";
|
|
53
|
+
readonly required: readonly ["id"];
|
|
54
|
+
}];
|
|
55
|
+
readonly example: {
|
|
56
|
+
readonly filename: "midnight-rivers-master.wav";
|
|
57
|
+
readonly content_type: "audio/wav";
|
|
58
|
+
readonly file_size: 48234567;
|
|
59
|
+
readonly work_id: "<optional uuid — auto-creates a recording for master files>";
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
readonly "claim-required": {
|
|
63
|
+
readonly workflow: "claim-required";
|
|
64
|
+
readonly summary: "Resolve pending discoveries (credits, custody, artist links) into your catalog. Each discovery type has a typed claim verb; the generic discoveries_review surface accepts/rejects without specialised handling.";
|
|
65
|
+
readonly primary_tool: "pica_discoveries_query";
|
|
66
|
+
readonly primary_required: readonly [];
|
|
67
|
+
readonly primary_recommended: readonly ["status", "limit"];
|
|
68
|
+
readonly enums: {
|
|
69
|
+
readonly status: readonly ["expired", "pending", "resolved", "revoked"];
|
|
70
|
+
readonly match_basis: readonly ["email", "ipi", "ipn", "isni", "musicbrainz"];
|
|
71
|
+
readonly custody_type: readonly ["composition", "master"];
|
|
72
|
+
};
|
|
73
|
+
readonly companion_calls: readonly [{
|
|
74
|
+
readonly tool: "pica_discoveries_review";
|
|
75
|
+
readonly when: "Generic accept/reject for any discovery row — accepted discoveries update your catalog automatically. Use for non-credit / non-custody / non-artist discoveries, or when the typed claim tools refuse on rate-limit / state preconditions.";
|
|
76
|
+
readonly required: readonly ["discovery_id", "status"];
|
|
77
|
+
}, {
|
|
78
|
+
readonly tool: "pica_claim_credit";
|
|
79
|
+
readonly when: "Drain a discovered_credits row and insert a work_credits row in your catalog. Rate-limited to 20 claims/hour. Re-claiming an already-resolved row returns DISCOVERY_ALREADY_RESOLVED (409).";
|
|
80
|
+
readonly required: readonly ["id"];
|
|
81
|
+
}, {
|
|
82
|
+
readonly tool: "pica_claim_custody";
|
|
83
|
+
readonly when: "Drain a discovered_custody row into a pending custody_claims row with +72h silent-consent auto-approve. The current custodian keeps the catalog row until the window elapses.";
|
|
84
|
+
readonly required: readonly ["id"];
|
|
85
|
+
}, {
|
|
86
|
+
readonly tool: "pica_claim_artist";
|
|
87
|
+
readonly when: "Drain a discovered_artists row instantly (identity evidence already validated at discovery time). Requires your identity to already be linked via pica_update_my_identity. Refuses (409) when an open artist_claims review row exists.";
|
|
88
|
+
readonly required: readonly ["id"];
|
|
89
|
+
}];
|
|
90
|
+
readonly example: {
|
|
91
|
+
readonly status: "pending";
|
|
92
|
+
readonly limit: 50;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
readonly "enrichment-resolve-required": {
|
|
96
|
+
readonly workflow: "enrichment-resolve-required";
|
|
97
|
+
readonly summary: "Fan out enrichment across every eligible source for an entity (work / recording / person), then review fuzzy Tier B matches in the proposals queue. Tier A identifier matches apply directly; Tier B fuzzy matches queue as proposals.";
|
|
98
|
+
readonly primary_tool: "pica_resolve_work";
|
|
99
|
+
readonly primary_required: readonly ["work_id"];
|
|
100
|
+
readonly primary_recommended: readonly ["sources", "include_fuzzy"];
|
|
101
|
+
readonly enums: {
|
|
102
|
+
readonly status: readonly ["applied", "expired", "pending", "rejected"];
|
|
103
|
+
readonly entity_type: readonly ["person", "recording", "work"];
|
|
104
|
+
readonly proposal_action: readonly ["create", "update"];
|
|
105
|
+
};
|
|
106
|
+
readonly companion_calls: readonly [{
|
|
107
|
+
readonly tool: "pica_resolve_recording";
|
|
108
|
+
readonly when: "Recording-side variant. Fans out across Spotify, YouTube, MusicBrainz, Discogs. Triggered by spotify_track_uri / youtube_video_id on the recording.";
|
|
109
|
+
readonly required: readonly ["recording_id"];
|
|
110
|
+
}, {
|
|
111
|
+
readonly tool: "pica_resolve_person";
|
|
112
|
+
readonly when: "Person-side variant. Fans out across ISNI and MusicBrainz (Wikidata downstream). Triggered by isni / musicbrainz_id on the person.";
|
|
113
|
+
readonly required: readonly ["person_id"];
|
|
114
|
+
}, {
|
|
115
|
+
readonly tool: "pica_enrichment_proposals_list";
|
|
116
|
+
readonly when: "After resolve — list pending Tier B fuzzy matches awaiting review. Only pending status is returned.";
|
|
117
|
+
readonly required: readonly [];
|
|
118
|
+
}, {
|
|
119
|
+
readonly tool: "pica_enrichment_proposal_apply";
|
|
120
|
+
readonly when: "Commit a reviewed proposal. Drift detection runs first on update proposals — pass force=true only after the user has reviewed any conflicts from a prior drift_detected response.";
|
|
121
|
+
readonly required: readonly ["proposal_id"];
|
|
122
|
+
}, {
|
|
123
|
+
readonly tool: "pica_enrichment_proposal_reject";
|
|
124
|
+
readonly when: "Dismiss a proposal. Content-hash suppression permanently blocks re-proposal of the same exact content; cascade only re-proposes if the source data genuinely changes.";
|
|
125
|
+
readonly required: readonly ["proposal_id"];
|
|
126
|
+
}];
|
|
127
|
+
readonly example: {
|
|
128
|
+
readonly work_id: "<uuid>";
|
|
129
|
+
readonly sources: readonly ["mlc", "spotify"];
|
|
130
|
+
readonly include_fuzzy: true;
|
|
131
|
+
};
|
|
132
|
+
};
|
|
133
|
+
readonly "export-required": {
|
|
134
|
+
readonly workflow: "export-required";
|
|
135
|
+
readonly summary: "Generate exports of the works catalog in formats matching the destination — CSV/JSON for general use, CWR for PRO registration, industry-ready packages for publishers/labels/sync, CAR for diligence and finance, AI-consent for declaration matrices.";
|
|
136
|
+
readonly primary_tool: "pica_export_catalog_csv";
|
|
137
|
+
readonly primary_required: readonly [];
|
|
138
|
+
readonly primary_recommended: readonly ["format"];
|
|
139
|
+
readonly enums: {};
|
|
140
|
+
readonly companion_calls: readonly [{
|
|
141
|
+
readonly tool: "pica_export_song_registration";
|
|
142
|
+
readonly when: "CWR-compatible song-registration export, formatted for PRO/CMO submission. Billing-gated.";
|
|
143
|
+
readonly required: readonly [];
|
|
144
|
+
}, {
|
|
145
|
+
readonly tool: "pica_export_industry_ready";
|
|
146
|
+
readonly when: "Industry-ready metadata package — formatted for distribution to publishers, labels, and sync agents. Billing-gated.";
|
|
147
|
+
readonly required: readonly [];
|
|
148
|
+
}, {
|
|
149
|
+
readonly tool: "pica_export_catalog_asset_report";
|
|
150
|
+
readonly when: "Catalog Asset Report (CAR) — unified ZIP bundle with cover PDF, evidence folders, integrity manifest. Property-lending framing for finance / insurance / diligence. Nested `sections` object accepts boolean flags: valuation, assets, agreements, intelligence, audio. Ownership is always included. Billing-gated.";
|
|
151
|
+
readonly required: readonly [];
|
|
152
|
+
}, {
|
|
153
|
+
readonly tool: "pica_export_ai_consent";
|
|
154
|
+
readonly when: "AI-usage consent declaration matrix — per-work + per-contributor declarations of human-made / AI-assisted / AI-generated.";
|
|
155
|
+
readonly required: readonly [];
|
|
156
|
+
}];
|
|
157
|
+
readonly example: {
|
|
158
|
+
readonly format: "csv";
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
readonly "multimedia-required": {
|
|
162
|
+
readonly workflow: "multimedia-required";
|
|
163
|
+
readonly summary: "Required fields to register a multimedia item (photo / video / audio / external streaming link), and the patterns for importing or attaching to a work.";
|
|
164
|
+
readonly primary_tool: "pica_multimedia_create";
|
|
165
|
+
readonly primary_required: readonly ["title", "content_type"];
|
|
166
|
+
readonly primary_recommended: readonly ["url", "classification", "caption", "description", "tags", "credits", "duration_seconds", "collection_id", "display_order", "is_featured", "is_published", "venue", "event_name", "performance_date", "setlist_position", "sync_side", "spotify_url", "spotify_track_uri", "spotify_track_id", "youtube_url", "youtube_video_id", "soundcloud_url", "thumbnail_url"];
|
|
167
|
+
readonly enums: {
|
|
168
|
+
readonly content_type: readonly ["live_performance", "soundcloud_track", "spotify_track", "uploaded_audio", "uploaded_photo", "uploaded_video", "youtube_video"];
|
|
169
|
+
readonly classification: readonly ["album_artwork", "artist_showcase", "behind_the_scenes", "general", "live_performance", "music_video", "promo_material", "studio_session", "sync_placement"];
|
|
170
|
+
};
|
|
171
|
+
readonly companion_calls: readonly [{
|
|
172
|
+
readonly tool: "pica_multimedia_import_url";
|
|
173
|
+
readonly when: "Import an external image or video URL — downloads the file into PICA storage rather than referencing it externally. Use for Spotify artwork, web images, etc.";
|
|
174
|
+
readonly required: readonly ["url"];
|
|
175
|
+
}, {
|
|
176
|
+
readonly tool: "pica_multimedia_link_youtube";
|
|
177
|
+
readonly when: "YouTube-specific variant — pulls thumbnail, title, and view count automatically. Use this instead of pica_multimedia_create for YouTube videos.";
|
|
178
|
+
readonly required: readonly ["youtube_video_id", "title"];
|
|
179
|
+
}, {
|
|
180
|
+
readonly tool: "pica_multimedia_link_work";
|
|
181
|
+
readonly when: "Attach an existing multimedia item to a work with a typed relationship (music_video_for, sync_placement, album_artwork, etc.).";
|
|
182
|
+
readonly required: readonly ["multimedia_id", "work_id", "relationship_type"];
|
|
183
|
+
}];
|
|
184
|
+
readonly example: {
|
|
185
|
+
readonly title: "Midnight Rivers — Official Music Video";
|
|
186
|
+
readonly content_type: "youtube_video";
|
|
187
|
+
readonly url: "https://www.youtube.com/watch?v=dQw4w9WgXcQ";
|
|
188
|
+
};
|
|
189
|
+
};
|
|
190
|
+
readonly "person-required": {
|
|
191
|
+
readonly workflow: "person-required";
|
|
192
|
+
readonly summary: "Required fields to register a person (writer, performer, producer, publisher). Identifiers (IPI / ISNI / PRO / MusicBrainz / etc.) are inline-settable at create time.";
|
|
193
|
+
readonly primary_tool: "pica_people_create";
|
|
194
|
+
readonly primary_required: readonly ["first_name", "last_name"];
|
|
195
|
+
readonly primary_recommended: readonly ["middle_name", "name", "stage_name", "stage_names", "person_type", "biography", "email", "emails", "phone", "website", "social_media", "roles", "tags", "cae_ipi_number", "ipn_number", "prs_number", "ppl_number", "mcps_member_number", "pro_name", "pro_member_number", "default_publisher", "default_publisher_ipi", "company", "position", "territory", "relationship_strength", "email_preferences", "profile_image_url", "notes", "isni", "musicbrainz_id", "wikidata_id", "discogs_artist_id", "deezer_artist_id", "date_of_birth", "gender", "nationality", "birth_place", "instruments", "career_start_year"];
|
|
196
|
+
readonly enums: {};
|
|
197
|
+
readonly companion_calls: readonly [{
|
|
198
|
+
readonly tool: "pica_people_update";
|
|
199
|
+
readonly when: "After creation — to amend name, identifiers (IPI / ISNI / PRO / MusicBrainz / etc.), or any other inline field. Same payload shape as create plus `id`.";
|
|
200
|
+
readonly required: readonly ["id"];
|
|
201
|
+
}];
|
|
202
|
+
readonly example: {
|
|
203
|
+
readonly first_name: "Jane";
|
|
204
|
+
readonly last_name: "Doe";
|
|
205
|
+
readonly cae_ipi_number: "00000000001";
|
|
206
|
+
readonly isni: "0000000123456789";
|
|
207
|
+
readonly pro_member_number: "PRS123456";
|
|
208
|
+
};
|
|
209
|
+
};
|
|
210
|
+
readonly "recording-credits-required": {
|
|
211
|
+
readonly workflow: "recording-credits-required";
|
|
212
|
+
readonly summary: "Required fields per credit row when attaching MainArtist / FeaturedArtist / Producer / Engineer credits to a recording. Distinct role enum from work credits. person_id is optional — credits can carry just credited_name.";
|
|
213
|
+
readonly primary_tool: "pica_recording_credits_update";
|
|
214
|
+
readonly primary_required: readonly ["recording_id", "credited_name", "role"];
|
|
215
|
+
readonly primary_recommended: readonly ["person_id", "split_percentage", "split_type", "display_order", "notes"];
|
|
216
|
+
readonly enums: {
|
|
217
|
+
readonly role: readonly ["Arranger", "Co-Producer", "Engineer", "Executive Producer", "FeaturedArtist", "Instrumentalist", "MainArtist", "Mastering Engineer", "Mixer", "Other", "Performer", "Producer", "Programmer", "Recording Engineer", "Remixer", "Vocalist"];
|
|
218
|
+
};
|
|
219
|
+
readonly companion_calls: readonly [];
|
|
220
|
+
readonly example: {
|
|
221
|
+
readonly recording_id: "<uuid>";
|
|
222
|
+
readonly credited_name: "The Riverbed Trio";
|
|
223
|
+
readonly role: "MainArtist";
|
|
224
|
+
readonly person_id: "<uuid>";
|
|
225
|
+
};
|
|
226
|
+
};
|
|
227
|
+
readonly "recording-required": {
|
|
228
|
+
readonly workflow: "recording-required";
|
|
229
|
+
readonly summary: "Required fields to register a recording (a specific master, version, or live capture of a work).";
|
|
230
|
+
readonly primary_tool: "pica_recordings_create";
|
|
231
|
+
readonly primary_required: readonly ["title", "artist_name", "version_type"];
|
|
232
|
+
readonly primary_recommended: readonly ["recording_title", "work_id", "ownership_percentage", "labels", "isrc", "isrc_source", "musicbrainz_recording_id", "mlc_recording_id", "mlc_song_code", "duration_ms", "preview_url", "album_art_url", "spotify_url", "spotify_track_uri", "spotify_track_id", "youtube_video_id", "youtube_url", "apple_music_url", "deezer_track_id", "ppl_registered", "ppl_recording_id", "ai_disclosure", "provenance_attestation", "training_rights"];
|
|
233
|
+
readonly enums: {
|
|
234
|
+
readonly version_type: readonly ["acoustic", "alternate", "alternate_master", "cover", "live_performance", "lyric_video", "master", "music_video", "remix"];
|
|
235
|
+
};
|
|
236
|
+
readonly companion_calls: readonly [{
|
|
237
|
+
readonly tool: "pica_recording_credits_update";
|
|
238
|
+
readonly when: "Per credit — attach a single MainArtist / Producer / Engineer credit. Call once per person; does NOT take a credits[] batch (asymmetric with pica_credits_update for works).";
|
|
239
|
+
readonly required: readonly ["recording_id", "credited_name", "role"];
|
|
240
|
+
}, {
|
|
241
|
+
readonly tool: "pica_recordings_update";
|
|
242
|
+
readonly when: "After creation — to amend recording_title, artist_name, version_type, isrc, duration_ms, or any other inline field. Same payload shape as create plus `id`.";
|
|
243
|
+
readonly required: readonly ["id"];
|
|
244
|
+
}];
|
|
245
|
+
readonly example: {
|
|
246
|
+
readonly title: "Midnight Rivers (Master)";
|
|
247
|
+
readonly artist_name: "The Riverbed Trio";
|
|
248
|
+
readonly version_type: "master";
|
|
249
|
+
readonly isrc: "USABC2300001";
|
|
250
|
+
readonly duration_ms: 213000;
|
|
251
|
+
};
|
|
252
|
+
};
|
|
253
|
+
readonly "recording-splits-required": {
|
|
254
|
+
readonly workflow: "recording-splits-required";
|
|
255
|
+
readonly summary: "Required fields per row when assigning master-rights ownership on a recording. Distinct from publishing splits on works (those flow through pica_credits_update + pica_split_sheet_*). Recording splits drive master royalty payouts and downstream credit gating; pica_recording_splits_create runs an ADR-200 Class D form-confirmation gate when the client supports `elicitation/url`. Use `dry_run: true` for a no-op preview before committing.";
|
|
256
|
+
readonly primary_tool: "pica_recording_splits_create";
|
|
257
|
+
readonly primary_required: readonly ["recording_id", "split_type", "percentage"];
|
|
258
|
+
readonly primary_recommended: readonly ["person_id", "role", "territory", "start_date", "end_date", "notes", "dry_run"];
|
|
259
|
+
readonly enums: {
|
|
260
|
+
readonly split_type: readonly ["master", "mechanical", "performance", "sync"];
|
|
261
|
+
readonly role: readonly ["engineer", "label", "masterer", "mixer", "other", "owner", "performer", "producer"];
|
|
262
|
+
};
|
|
263
|
+
readonly companion_calls: readonly [{
|
|
264
|
+
readonly tool: "pica_recording_splits_verify";
|
|
265
|
+
readonly when: "After create — explicitly mark a split as confirmed/agreed by the relevant parties. Sets verified=true + verified_at + verified_by on the row.";
|
|
266
|
+
readonly required: readonly ["recording_id", "split_id"];
|
|
267
|
+
}, {
|
|
268
|
+
readonly tool: "pica_recording_splits_list";
|
|
269
|
+
readonly when: "List all splits on a recording — verify totals and per-row verification state.";
|
|
270
|
+
readonly required: readonly ["recording_id"];
|
|
271
|
+
}];
|
|
272
|
+
readonly example: {
|
|
273
|
+
readonly recording_id: "<uuid>";
|
|
274
|
+
readonly split_type: "master";
|
|
275
|
+
readonly percentage: 50;
|
|
276
|
+
readonly role: "owner";
|
|
277
|
+
readonly person_id: "<optional uuid>";
|
|
278
|
+
readonly territory: "worldwide";
|
|
279
|
+
};
|
|
280
|
+
};
|
|
281
|
+
readonly "session-required": {
|
|
282
|
+
readonly workflow: "session-required";
|
|
283
|
+
readonly summary: "Required fields to log a studio session — title + start_time + end_time (ISO 8601 datetimes). Optional `session_type_id` is a UUID FK to the org's session_types lookup table; resolve via pica_sessions_types. The `status` column accepts scheduled / in_progress / completed / cancelled per the inputSchema, but the values are NOT enforced by a DB CHECK constraint — verify against the live tool's inputSchema if values matter to the caller.";
|
|
284
|
+
readonly primary_tool: "pica_sessions_create";
|
|
285
|
+
readonly primary_required: readonly ["title", "start_time", "end_time"];
|
|
286
|
+
readonly primary_recommended: readonly ["description", "session_type_id", "timezone", "is_all_day", "location", "location_url", "work_id", "recording_id", "status", "notes", "metadata", "participants"];
|
|
287
|
+
readonly enums: {};
|
|
288
|
+
readonly companion_calls: readonly [{
|
|
289
|
+
readonly tool: "pica_sessions_types";
|
|
290
|
+
readonly when: "Pre-flight to discover valid session_type_id values for this org. The lookup table is org-scoped and seeded with recording / mixing / mastering / writing / production / rehearsal entries on org bootstrap.";
|
|
291
|
+
readonly required: readonly [];
|
|
292
|
+
}, {
|
|
293
|
+
readonly tool: "pica_sessions_get";
|
|
294
|
+
readonly when: "After creation — verify the session row + participants persisted as expected. Reads back the full session record including any participants attached at create time.";
|
|
295
|
+
readonly required: readonly ["id"];
|
|
296
|
+
}, {
|
|
297
|
+
readonly tool: "pica_sessions_list";
|
|
298
|
+
readonly when: "Discovery / browse — list recent or upcoming sessions for the workspace.";
|
|
299
|
+
readonly required: readonly [];
|
|
300
|
+
}];
|
|
301
|
+
readonly example: {
|
|
302
|
+
readonly title: "Vocal recording — Midnight Rivers";
|
|
303
|
+
readonly start_time: "2026-05-08T14:00:00+01:00";
|
|
304
|
+
readonly end_time: "2026-05-08T17:00:00+01:00";
|
|
305
|
+
readonly session_type_id: "<uuid from pica_sessions_types>";
|
|
306
|
+
readonly location: "Tileyard Studios";
|
|
307
|
+
readonly work_id: "<optional uuid>";
|
|
308
|
+
};
|
|
309
|
+
};
|
|
310
|
+
readonly "split-sheet-required": {
|
|
311
|
+
readonly workflow: "split-sheet-required";
|
|
312
|
+
readonly summary: "Required fields to generate a publishing split sheet on a work. Pre-condition: the work's writer credits (set via pica_credits_update) must already total 100% — pica_split_sheet_generate validates and returns 400 otherwise. The generated sheet snapshots current splits + signature state; pica_split_sheet_send notifies each credited writer for review/signature. The split_sheets.status column defaults 'draft' and is NOT enforced by a DB CHECK constraint.";
|
|
313
|
+
readonly primary_tool: "pica_split_sheet_generate";
|
|
314
|
+
readonly primary_required: readonly ["work_id"];
|
|
315
|
+
readonly primary_recommended: readonly [];
|
|
316
|
+
readonly enums: {};
|
|
317
|
+
readonly companion_calls: readonly [{
|
|
318
|
+
readonly tool: "pica_split_sheet_send";
|
|
319
|
+
readonly when: "After generate — notify each credited writer for review/signature via in-app notification + Telegram (if connected) + email. Non-PICA-user writers receive a collaboration invite email instead. Soft-fails per-writer; aggregate result reports delivered / not_a_pica_user / failed counts.";
|
|
320
|
+
readonly required: readonly ["work_id", "split_sheet_id"];
|
|
321
|
+
}, {
|
|
322
|
+
readonly tool: "pica_split_sheet_get";
|
|
323
|
+
readonly when: "Read back a specific sheet with its full content + signature state. Use after send to check who has signed.";
|
|
324
|
+
readonly required: readonly ["work_id", "split_sheet_id"];
|
|
325
|
+
}, {
|
|
326
|
+
readonly tool: "pica_split_sheet_list";
|
|
327
|
+
readonly when: "List all sheets for a work — useful when multiple revisions exist (e.g. a sheet was generated, splits changed, regenerate).";
|
|
328
|
+
readonly required: readonly ["work_id"];
|
|
329
|
+
}];
|
|
330
|
+
readonly example: {
|
|
331
|
+
readonly work_id: "<uuid — credits must total 100% first via pica_credits_update>";
|
|
332
|
+
};
|
|
333
|
+
};
|
|
334
|
+
readonly "sync-placement-required": {
|
|
335
|
+
readonly workflow: "sync-placement-required";
|
|
336
|
+
readonly summary: "Sync-placement create flow — atomic write of (placement + draft sync_license agreement + at least one agreement_party + recordings + evidence sources) in a single Postgres transaction. At least one entry in `contacts[]` is required (empty rejects with structured MISSING_CONTACT). Contacts may reference an existing `person_id` OR pass `person_name` + `role` (+ optional email/company/position) to auto-create a person row inline. The verification_status auto-advances based on evidence kinds: any non-attestation source ('cue_sheet', 'invoice', 'agreement_pdf', 'email', 'screenshot', 'web', 'spreadsheet_import') → evidence_attached; only 'user_attestation' → self_attested; none → unverified. Operator-only fields (verification_status='operator_verified'|'disputed', confidentiality_level changes, hard delete) throw OPERATOR_REQUIRED for customer agents; use update with status:'terminated' for self-service retirement.";
|
|
337
|
+
readonly primary_tool: "pica_sync_placements_create";
|
|
338
|
+
readonly primary_required: readonly ["work_id", "production_title", "contacts"];
|
|
339
|
+
readonly primary_recommended: readonly ["production_type", "brand", "production_company", "status", "fee_amount", "fee_currency", "use_start_date", "use_end_date", "territory", "media_channels", "notes", "confidentiality_level", "recordings", "sources"];
|
|
340
|
+
readonly enums: {
|
|
341
|
+
readonly status: readonly ["aired", "expired", "licensed", "renewed", "terminated"];
|
|
342
|
+
readonly verification_status: readonly ["disputed", "evidence_attached", "operator_verified", "self_attested", "unverified"];
|
|
343
|
+
readonly confidentiality_level: readonly ["private", "public", "redacted_in_public_car"];
|
|
344
|
+
};
|
|
345
|
+
readonly companion_calls: readonly [{
|
|
346
|
+
readonly tool: "pica_sync_placements_inspect";
|
|
347
|
+
readonly when: "After create — read the placement back to confirm verification_status auto-advance and inspect the linked agreement + parties + recordings + sources.";
|
|
348
|
+
readonly required: readonly ["id"];
|
|
349
|
+
}, {
|
|
350
|
+
readonly tool: "pica_sync_placements_update";
|
|
351
|
+
readonly when: "Patch fee, dates, status, territory, media_channels, brand, production_company, or any other inline field. Status transitions follow the placement state machine; illegal transitions throw INVALID_TRANSITION.";
|
|
352
|
+
readonly required: readonly ["id"];
|
|
353
|
+
}, {
|
|
354
|
+
readonly tool: "pica_sync_placements_cite";
|
|
355
|
+
readonly when: "Attach an evidence source after creation — auto-advances verification_status when the kind is non-attestation.";
|
|
356
|
+
readonly required: readonly ["id", "url", "kind"];
|
|
357
|
+
}, {
|
|
358
|
+
readonly tool: "pica_sync_placements_delete";
|
|
359
|
+
readonly when: "Operator-only hard delete (two-step confirmation). Customer agents should use pica_sync_placements_update with status:'terminated' instead for self-service soft-delete.";
|
|
360
|
+
readonly required: readonly ["id"];
|
|
361
|
+
}, {
|
|
362
|
+
readonly tool: "pica_sync_placements_query";
|
|
363
|
+
readonly when: "List placements for the org — filter by work_id, status, verification_status, brand, production_company, person_id, recording_id, source_license_enquiry_id, min_fee, currency.";
|
|
364
|
+
readonly required: readonly [];
|
|
365
|
+
}];
|
|
366
|
+
readonly example: {
|
|
367
|
+
readonly work_id: "00000000-0000-0000-0000-000000000000";
|
|
368
|
+
readonly production_title: "Midnight Rivers — Trailer 2026";
|
|
369
|
+
readonly production_type: "trailer";
|
|
370
|
+
readonly brand: "Lumière Studios";
|
|
371
|
+
readonly production_company: "Lumière Studios Inc.";
|
|
372
|
+
readonly status: "licensed";
|
|
373
|
+
readonly fee_amount: 25000;
|
|
374
|
+
readonly fee_currency: "USD";
|
|
375
|
+
readonly use_start_date: "2026-06-01";
|
|
376
|
+
readonly use_end_date: "2027-05-31";
|
|
377
|
+
readonly territory: readonly ["WW"];
|
|
378
|
+
readonly media_channels: readonly ["theatrical", "online"];
|
|
379
|
+
readonly confidentiality_level: "redacted_in_public_car";
|
|
380
|
+
readonly contacts: readonly [{
|
|
381
|
+
readonly person_name: "Sarah Lee";
|
|
382
|
+
readonly role: "music_supervisor";
|
|
383
|
+
readonly email: "sarah@lumiere.example";
|
|
384
|
+
readonly company: "Lumière Studios";
|
|
385
|
+
}];
|
|
386
|
+
readonly recordings: readonly [{
|
|
387
|
+
readonly recording_id: "00000000-0000-0000-0000-000000000001";
|
|
388
|
+
readonly role: "main_master";
|
|
389
|
+
readonly master_fee: 12500;
|
|
390
|
+
readonly master_share_licensed_pct: 100;
|
|
391
|
+
}];
|
|
392
|
+
readonly sources: readonly [{
|
|
393
|
+
readonly url: "https://example.com/agreements/midnight-rivers.pdf";
|
|
394
|
+
readonly kind: "agreement_pdf";
|
|
395
|
+
readonly field_coverage: readonly ["fee_amount", "use_start_date", "territory"];
|
|
396
|
+
}];
|
|
397
|
+
};
|
|
398
|
+
};
|
|
399
|
+
readonly "work-credits-required": {
|
|
400
|
+
readonly workflow: "work-credits-required";
|
|
401
|
+
readonly summary: "Required fields per credit row when attaching writer/composer/publisher credits to a work. The tool exposes `role` (mapped to credit_type on work_credits internally) and `splits` (mapped to writer_split_percentage). Splits must sum to 100. The `enums.credit_type` block reflects the column-level CHECK; pass these values via the `role` field.";
|
|
402
|
+
readonly primary_tool: "pica_credits_update";
|
|
403
|
+
readonly primary_required: readonly ["work_id", "credits"];
|
|
404
|
+
readonly primary_recommended: readonly [];
|
|
405
|
+
readonly enums: {
|
|
406
|
+
readonly credit_type: readonly ["arranger", "composer", "conductor", "engineer", "instrumentalist", "lyricist", "mastering", "mixer", "owner", "performer", "producer", "programmer", "remixer", "vocalist", "writer"];
|
|
407
|
+
readonly rights_type: readonly ["all", "mechanical", "performance", "synchronization"];
|
|
408
|
+
readonly attestation_status: readonly ["attested", "declined", "disputed", "pending"];
|
|
409
|
+
};
|
|
410
|
+
readonly companion_calls: readonly [];
|
|
411
|
+
readonly example: {
|
|
412
|
+
readonly work_id: "<uuid>";
|
|
413
|
+
readonly credits: readonly [{
|
|
414
|
+
readonly person_id: "<uuid>";
|
|
415
|
+
readonly role: "writer";
|
|
416
|
+
readonly splits: 50;
|
|
417
|
+
}, {
|
|
418
|
+
readonly person_id: "<uuid>";
|
|
419
|
+
readonly role: "writer";
|
|
420
|
+
readonly splits: 50;
|
|
421
|
+
}];
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
readonly "work-required": {
|
|
425
|
+
readonly workflow: "work-required";
|
|
426
|
+
readonly summary: "Required fields to register a fully-credited musical work.";
|
|
427
|
+
readonly primary_tool: "pica_works_create";
|
|
428
|
+
readonly primary_required: readonly ["title", "work_type"];
|
|
429
|
+
readonly primary_recommended: readonly ["work_status", "iswc", "isrc", "tunecode", "prs_work_id", "spotify_track_uri", "duration_seconds", "tempo", "key", "genre", "mood", "primary_artist", "primary_artist_id", "display_artist", "publisher_name", "lyrics", "lyrics_language", "published", "notes", "ai_disclosure", "provenance_attestation", "training_rights"];
|
|
430
|
+
readonly enums: {
|
|
431
|
+
readonly work_type: readonly ["demo", "instrumental", "library", "sample", "song"];
|
|
432
|
+
readonly work_status: readonly ["archived", "demo", "pitched", "placed", "released", "unreleased"];
|
|
433
|
+
};
|
|
434
|
+
readonly companion_calls: readonly [{
|
|
435
|
+
readonly tool: "pica_credits_update";
|
|
436
|
+
readonly when: "Once per work, batch — attach all writer/publisher splits in a single call.";
|
|
437
|
+
readonly required: readonly ["work_id", "credits"];
|
|
438
|
+
readonly per_row_required: readonly ["person_id", "role"];
|
|
439
|
+
readonly constraint: "splits values must sum to 100 across all credits for the work (the tool maps role→credit_type and splits→writer_split_percentage on work_credits).";
|
|
440
|
+
}, {
|
|
441
|
+
readonly tool: "pica_works_update";
|
|
442
|
+
readonly when: "After creation — to amend title, work_type, work_status, iswc, lyrics, or any other inline field. Use the same payload shape as create with the addition of `id`.";
|
|
443
|
+
readonly required: readonly ["id"];
|
|
444
|
+
}];
|
|
445
|
+
readonly example: {
|
|
446
|
+
readonly title: "Midnight Rivers";
|
|
447
|
+
readonly work_type: "song";
|
|
448
|
+
readonly iswc: "T-123.456.789-0";
|
|
449
|
+
readonly duration_seconds: 213;
|
|
450
|
+
readonly lyrics_language: "en";
|
|
451
|
+
};
|
|
452
|
+
};
|
|
453
|
+
};
|
|
454
|
+
export type RequiredSchemaKey = keyof typeof REQUIRED_SCHEMAS;
|
|
455
|
+
//# sourceMappingURL=required-schemas.generated.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"required-schemas.generated.d.ts","sourceRoot":"","sources":["../../src/resources/required-schemas.generated.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAygCnB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,gBAAgB,CAAC"}
|