@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,510 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { ResourceError } from "@withpica/mcp-utils";
|
|
3
|
+
import { readFileSync } from "fs";
|
|
4
|
+
import { join } from "path";
|
|
5
|
+
import { WITHPICA_PRIMER } from "./llms-primer.js";
|
|
6
|
+
import { WELCOME_MARKDOWN } from "./welcome.js";
|
|
7
|
+
import { AGENT_GUIDE_AUTHENTICATED, AGENT_GUIDE_LOBBY } from "./agent-guide.js";
|
|
8
|
+
import { REQUIRED_SCHEMAS } from "./required-schemas.generated.js";
|
|
9
|
+
import { UPLOAD_HTML } from "../apps/upload.js";
|
|
10
|
+
import { DOWNLOAD_HTML } from "../apps/download.js";
|
|
11
|
+
import { RELEASE_HTML } from "../apps/release.js";
|
|
12
|
+
import { PICA_STORAGE_CONNECT_DOMAINS } from "../apps/shared.js";
|
|
13
|
+
export class ResourceRegistry {
|
|
14
|
+
pica;
|
|
15
|
+
config;
|
|
16
|
+
constructor(pica, config) {
|
|
17
|
+
this.pica = pica;
|
|
18
|
+
this.config = config;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* List all available resources
|
|
22
|
+
*/
|
|
23
|
+
listResources() {
|
|
24
|
+
const resources = [
|
|
25
|
+
{
|
|
26
|
+
uri: "pica://welcome",
|
|
27
|
+
name: "Welcome to PICA",
|
|
28
|
+
description: "Getting started guide — how to sign in and what you can do",
|
|
29
|
+
mimeType: "text/markdown",
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
uri: "pica://docs/agent-guide",
|
|
33
|
+
name: "Agent Guide — How to Use PICA",
|
|
34
|
+
description: "Workflow-by-workflow guide for agents — what tools to call in what order, common gotchas, pointers to schema resources. Lobby mode returns a sign-in-focused variant; authenticated mode returns the full workflow map.",
|
|
35
|
+
mimeType: "text/markdown",
|
|
36
|
+
},
|
|
37
|
+
];
|
|
38
|
+
if (this.config?.lobbyMode || !this.pica) {
|
|
39
|
+
return resources;
|
|
40
|
+
}
|
|
41
|
+
resources.push({
|
|
42
|
+
uri: "llms://primer",
|
|
43
|
+
name: "PICA Domain Primer",
|
|
44
|
+
description: "Plain-language description of PICA's domain model, entity relationships, and recommended agent workflows. Read this first.",
|
|
45
|
+
mimeType: "text/markdown",
|
|
46
|
+
}, {
|
|
47
|
+
uri: "works://list",
|
|
48
|
+
name: "All Works",
|
|
49
|
+
description: "Complete list of musical works in the catalog",
|
|
50
|
+
mimeType: "application/json",
|
|
51
|
+
}, {
|
|
52
|
+
uri: "people://list",
|
|
53
|
+
name: "All People",
|
|
54
|
+
description: "Complete list of people (artists, composers, etc.)",
|
|
55
|
+
mimeType: "application/json",
|
|
56
|
+
}, {
|
|
57
|
+
uri: "recordings://list",
|
|
58
|
+
name: "All Recordings",
|
|
59
|
+
description: "Complete list of recordings",
|
|
60
|
+
mimeType: "application/json",
|
|
61
|
+
}, {
|
|
62
|
+
uri: "catalog://stats",
|
|
63
|
+
name: "Catalog Statistics",
|
|
64
|
+
description: "Statistics and metrics about the catalog",
|
|
65
|
+
mimeType: "application/json",
|
|
66
|
+
}, {
|
|
67
|
+
uri: "catalog://health",
|
|
68
|
+
name: "Catalog Health (PICA Score)",
|
|
69
|
+
description: "PICA Score — composite legibility index (0-100) with grade, 4-pillar breakdown, and actionable suggestions",
|
|
70
|
+
mimeType: "application/json",
|
|
71
|
+
}, {
|
|
72
|
+
uri: "workspace://context",
|
|
73
|
+
name: "Workspace Context",
|
|
74
|
+
description: "Aggregated workspace orientation — org info, catalog stats, health score, and top priorities in one call",
|
|
75
|
+
mimeType: "application/json",
|
|
76
|
+
}, {
|
|
77
|
+
uri: "events://recent",
|
|
78
|
+
name: "Recent Events",
|
|
79
|
+
description: "Recent webhook delivery events — what happened in this workspace recently",
|
|
80
|
+
mimeType: "application/json",
|
|
81
|
+
}, {
|
|
82
|
+
uri: "api://openapi",
|
|
83
|
+
name: "OpenAPI Specification",
|
|
84
|
+
description: "OpenAPI 3.1 spec for the top 20 PICA API endpoints — works, people, recordings, agreements, credits, search, health",
|
|
85
|
+
mimeType: "text/yaml",
|
|
86
|
+
}, {
|
|
87
|
+
uri: "ui://pica/upload",
|
|
88
|
+
name: "Upload Files",
|
|
89
|
+
description: "Generic file upload card — drop zone for audio, photos, documents, anything",
|
|
90
|
+
mimeType: "text/html;profile=mcp-app",
|
|
91
|
+
}, {
|
|
92
|
+
uri: "ui://pica/download",
|
|
93
|
+
name: "Download File",
|
|
94
|
+
description: "File download card — shows file metadata and a download button",
|
|
95
|
+
mimeType: "text/html;profile=mcp-app",
|
|
96
|
+
}, {
|
|
97
|
+
uri: "ui://pica/release",
|
|
98
|
+
name: "Release Card",
|
|
99
|
+
description: "Release rich-render card — cover art + markdown summary (ADR-208 Phase 3 Primitive D, Phase 3 stub)",
|
|
100
|
+
mimeType: "text/html;profile=mcp-app",
|
|
101
|
+
}, {
|
|
102
|
+
uri: "pica://schemas/work-required",
|
|
103
|
+
name: "Required Fields — Register a Work",
|
|
104
|
+
description: "Required + recommended fields, CHECK enums, and companion-call orchestration for pica_works_create. Read before calling the work-create workflow.",
|
|
105
|
+
mimeType: "application/json",
|
|
106
|
+
}, {
|
|
107
|
+
uri: "pica://schemas/recording-required",
|
|
108
|
+
name: "Required Fields — Register a Recording",
|
|
109
|
+
description: "Required + recommended fields, CHECK enums, and companion-call orchestration for pica_recordings_create.",
|
|
110
|
+
mimeType: "application/json",
|
|
111
|
+
}, {
|
|
112
|
+
uri: "pica://schemas/work-credits-required",
|
|
113
|
+
name: "Required Fields — Attach Work Credits",
|
|
114
|
+
description: "Per-row required fields and CHECK enums for pica_credits_update (writer/composer/publisher splits, sum to 100).",
|
|
115
|
+
mimeType: "application/json",
|
|
116
|
+
}, {
|
|
117
|
+
uri: "pica://schemas/recording-credits-required",
|
|
118
|
+
name: "Required Fields — Attach Recording Credits",
|
|
119
|
+
description: "Per-row required fields and the role enum for pica_recording_credits_update (MainArtist / FeaturedArtist / Producer / Engineer / etc.).",
|
|
120
|
+
mimeType: "application/json",
|
|
121
|
+
}, {
|
|
122
|
+
uri: "pica://schemas/person-required",
|
|
123
|
+
name: "Required Fields — Register a Person",
|
|
124
|
+
description: "Required + recommended fields for pica_people_create (writers, performers, publishers; identifiers settable inline).",
|
|
125
|
+
mimeType: "application/json",
|
|
126
|
+
}, {
|
|
127
|
+
uri: "pica://schemas/audio-upload-required",
|
|
128
|
+
name: "Required Fields — Upload Audio (3-Step Chain)",
|
|
129
|
+
description: "Required fields per step of the audio-upload chain (pica_audio_presigned_upload → pica_audio_complete_upload → pica_audio_analyze + poll), plus audio_files file_type / classification CHECK enums.",
|
|
130
|
+
mimeType: "application/json",
|
|
131
|
+
}, {
|
|
132
|
+
uri: "pica://schemas/enrichment-resolve-required",
|
|
133
|
+
name: "Required Fields — Run Enrichment",
|
|
134
|
+
description: "Required fields for pica_resolve_work / _person / _recording and the proposals review chain (list → apply / reject). Includes enrichment_proposals entity_type / status / proposal_action enums.",
|
|
135
|
+
mimeType: "application/json",
|
|
136
|
+
}, {
|
|
137
|
+
uri: "pica://schemas/agreement-required",
|
|
138
|
+
name: "Required Fields — Create an Agreement",
|
|
139
|
+
description: "Required + recommended fields for pica_agreements_create plus link-work and template-render companions. Includes agreements agreement_type / status / other_party_type CHECK enums.",
|
|
140
|
+
mimeType: "application/json",
|
|
141
|
+
}, {
|
|
142
|
+
uri: "pica://schemas/multimedia-required",
|
|
143
|
+
name: "Required Fields — Add Multimedia",
|
|
144
|
+
description: "Required fields for pica_multimedia_create and the import / YouTube / link-work companions. Includes multimedia_items content_type / classification CHECK enums.",
|
|
145
|
+
mimeType: "application/json",
|
|
146
|
+
}, {
|
|
147
|
+
uri: "pica://schemas/export-required",
|
|
148
|
+
name: "Required Fields — Export the Catalog",
|
|
149
|
+
description: "Five export destinations (CSV, song-registration, industry-ready, CAR, AI-consent) with destination guidance.",
|
|
150
|
+
mimeType: "application/json",
|
|
151
|
+
}, {
|
|
152
|
+
uri: "pica://schemas/claim-required",
|
|
153
|
+
name: "Required Fields — Claim a Discovery",
|
|
154
|
+
description: "Required fields for pica_discoveries_query and the typed claim verbs (credit / custody / artist), plus the generic discoveries_review surface. Includes discovered_credits / _custody / _artists status + match_basis + custody_type CHECK enums.",
|
|
155
|
+
mimeType: "application/json",
|
|
156
|
+
}, {
|
|
157
|
+
uri: "pica://schemas/session-required",
|
|
158
|
+
name: "Required Fields — Log a Studio Session",
|
|
159
|
+
description: "Required + recommended fields for pica_sessions_create plus the pica_sessions_types lookup companion. Status values are documented but not DB-CHECK-enforced.",
|
|
160
|
+
mimeType: "application/json",
|
|
161
|
+
}, {
|
|
162
|
+
uri: "pica://schemas/split-sheet-required",
|
|
163
|
+
name: "Required Fields — Generate a Split Sheet (Publishing)",
|
|
164
|
+
description: "Required fields for pica_split_sheet_generate. Pre-condition: writer credits on the work must total 100%. Companion calls cover send / get / list.",
|
|
165
|
+
mimeType: "application/json",
|
|
166
|
+
}, {
|
|
167
|
+
uri: "pica://schemas/recording-splits-required",
|
|
168
|
+
name: "Required Fields — Assign Master Ownership Splits",
|
|
169
|
+
description: "Required + recommended fields for pica_recording_splits_create. Includes recording_splits split_type + role CHECK enums. Distinct from publishing splits on works.",
|
|
170
|
+
mimeType: "application/json",
|
|
171
|
+
});
|
|
172
|
+
return resources;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Read a resource by URI
|
|
176
|
+
*/
|
|
177
|
+
async readResource(uri) {
|
|
178
|
+
switch (uri) {
|
|
179
|
+
case "pica://welcome":
|
|
180
|
+
return {
|
|
181
|
+
contents: [
|
|
182
|
+
{
|
|
183
|
+
uri: "pica://welcome",
|
|
184
|
+
mimeType: "text/markdown",
|
|
185
|
+
text: WELCOME_MARKDOWN,
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
};
|
|
189
|
+
case "pica://docs/agent-guide": {
|
|
190
|
+
const lobby = this.config?.lobbyMode || !this.pica;
|
|
191
|
+
return {
|
|
192
|
+
contents: [
|
|
193
|
+
{
|
|
194
|
+
uri: "pica://docs/agent-guide",
|
|
195
|
+
mimeType: "text/markdown",
|
|
196
|
+
text: lobby ? AGENT_GUIDE_LOBBY : AGENT_GUIDE_AUTHENTICATED,
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
default:
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (!this.pica) {
|
|
205
|
+
throw new ResourceError(`Resource not available in lobby mode: ${uri}`);
|
|
206
|
+
}
|
|
207
|
+
switch (uri) {
|
|
208
|
+
case "llms://primer":
|
|
209
|
+
return {
|
|
210
|
+
contents: [
|
|
211
|
+
{
|
|
212
|
+
uri: "llms://primer",
|
|
213
|
+
mimeType: "text/markdown",
|
|
214
|
+
text: WITHPICA_PRIMER,
|
|
215
|
+
},
|
|
216
|
+
],
|
|
217
|
+
};
|
|
218
|
+
case "works://list":
|
|
219
|
+
return await this.getWorksList();
|
|
220
|
+
case "people://list":
|
|
221
|
+
return await this.getPeopleList();
|
|
222
|
+
case "recordings://list":
|
|
223
|
+
return await this.getRecordingsList();
|
|
224
|
+
case "catalog://stats":
|
|
225
|
+
return await this.getCatalogStats();
|
|
226
|
+
case "catalog://health":
|
|
227
|
+
return await this.getCatalogHealth();
|
|
228
|
+
case "workspace://context":
|
|
229
|
+
return await this.getWorkspaceContext();
|
|
230
|
+
case "events://recent":
|
|
231
|
+
return await this.getRecentEvents();
|
|
232
|
+
case "api://openapi":
|
|
233
|
+
return this.getOpenAPISpec();
|
|
234
|
+
case "ui://pica/upload":
|
|
235
|
+
return {
|
|
236
|
+
contents: [
|
|
237
|
+
{
|
|
238
|
+
uri: "ui://pica/upload",
|
|
239
|
+
mimeType: "text/html;profile=mcp-app",
|
|
240
|
+
text: UPLOAD_HTML,
|
|
241
|
+
_meta: {
|
|
242
|
+
ui: {
|
|
243
|
+
csp: {
|
|
244
|
+
connectDomains: PICA_STORAGE_CONNECT_DOMAINS,
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
};
|
|
251
|
+
case "ui://pica/download":
|
|
252
|
+
return {
|
|
253
|
+
contents: [
|
|
254
|
+
{
|
|
255
|
+
uri: "ui://pica/download",
|
|
256
|
+
mimeType: "text/html;profile=mcp-app",
|
|
257
|
+
text: DOWNLOAD_HTML,
|
|
258
|
+
_meta: {
|
|
259
|
+
ui: {
|
|
260
|
+
csp: {
|
|
261
|
+
connectDomains: PICA_STORAGE_CONNECT_DOMAINS,
|
|
262
|
+
},
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
},
|
|
266
|
+
],
|
|
267
|
+
};
|
|
268
|
+
case "ui://pica/release":
|
|
269
|
+
return {
|
|
270
|
+
contents: [
|
|
271
|
+
{
|
|
272
|
+
uri: "ui://pica/release",
|
|
273
|
+
mimeType: "text/html;profile=mcp-app",
|
|
274
|
+
text: RELEASE_HTML,
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
};
|
|
278
|
+
case "pica://schemas/work-required":
|
|
279
|
+
case "pica://schemas/recording-required":
|
|
280
|
+
case "pica://schemas/work-credits-required":
|
|
281
|
+
case "pica://schemas/recording-credits-required":
|
|
282
|
+
case "pica://schemas/person-required":
|
|
283
|
+
case "pica://schemas/audio-upload-required":
|
|
284
|
+
case "pica://schemas/enrichment-resolve-required":
|
|
285
|
+
case "pica://schemas/agreement-required":
|
|
286
|
+
case "pica://schemas/multimedia-required":
|
|
287
|
+
case "pica://schemas/export-required":
|
|
288
|
+
case "pica://schemas/claim-required":
|
|
289
|
+
case "pica://schemas/session-required":
|
|
290
|
+
case "pica://schemas/split-sheet-required":
|
|
291
|
+
case "pica://schemas/recording-splits-required": {
|
|
292
|
+
const key = uri.replace("pica://schemas/", "");
|
|
293
|
+
const body = REQUIRED_SCHEMAS[key];
|
|
294
|
+
if (!body)
|
|
295
|
+
throw new ResourceError(`Schema not found: ${uri}`);
|
|
296
|
+
return {
|
|
297
|
+
contents: [
|
|
298
|
+
{
|
|
299
|
+
uri,
|
|
300
|
+
mimeType: "application/json",
|
|
301
|
+
text: JSON.stringify(body, null, 2),
|
|
302
|
+
},
|
|
303
|
+
],
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
default:
|
|
307
|
+
throw new ResourceError(`Resource not found: ${uri}`);
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get OpenAPI specification resource
|
|
312
|
+
*/
|
|
313
|
+
getOpenAPISpec() {
|
|
314
|
+
// Try multiple paths to find the spec file
|
|
315
|
+
const possiblePaths = [
|
|
316
|
+
join(process.cwd(), "docs/api/openapi.yaml"),
|
|
317
|
+
join(process.cwd(), "../docs/api/openapi.yaml"),
|
|
318
|
+
];
|
|
319
|
+
for (const specPath of possiblePaths) {
|
|
320
|
+
try {
|
|
321
|
+
const yamlContent = readFileSync(specPath, "utf-8");
|
|
322
|
+
return {
|
|
323
|
+
contents: [
|
|
324
|
+
{
|
|
325
|
+
uri: "api://openapi",
|
|
326
|
+
mimeType: "text/yaml",
|
|
327
|
+
text: yamlContent,
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Try next path
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
throw new ResourceError("OpenAPI spec not found. Expected at docs/api/openapi.yaml");
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Get works list resource
|
|
340
|
+
*/
|
|
341
|
+
async getWorksList() {
|
|
342
|
+
const works = await this.pica.works.list({ limit: 1000 });
|
|
343
|
+
return {
|
|
344
|
+
contents: [
|
|
345
|
+
{
|
|
346
|
+
uri: "works://list",
|
|
347
|
+
mimeType: "application/json",
|
|
348
|
+
text: JSON.stringify({
|
|
349
|
+
total: works.length,
|
|
350
|
+
works: works.map((work) => ({
|
|
351
|
+
id: work.id,
|
|
352
|
+
title: work.title,
|
|
353
|
+
work_type: work.work_type,
|
|
354
|
+
iswc: work.iswc,
|
|
355
|
+
is_verified: work.is_verified,
|
|
356
|
+
duration_seconds: work.duration_seconds,
|
|
357
|
+
})),
|
|
358
|
+
}, null, 2),
|
|
359
|
+
},
|
|
360
|
+
],
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Get people list resource
|
|
365
|
+
*/
|
|
366
|
+
async getPeopleList() {
|
|
367
|
+
const people = await this.pica.people.list({ limit: 1000 });
|
|
368
|
+
return {
|
|
369
|
+
contents: [
|
|
370
|
+
{
|
|
371
|
+
uri: "people://list",
|
|
372
|
+
mimeType: "application/json",
|
|
373
|
+
text: JSON.stringify({
|
|
374
|
+
total: people.length,
|
|
375
|
+
people: people.map((person) => ({
|
|
376
|
+
id: person.id,
|
|
377
|
+
first_name: person.first_name,
|
|
378
|
+
last_name: person.last_name,
|
|
379
|
+
email: person.email,
|
|
380
|
+
isni: person.isni,
|
|
381
|
+
musicbrainz_id: person.musicbrainz_id,
|
|
382
|
+
})),
|
|
383
|
+
}, null, 2),
|
|
384
|
+
},
|
|
385
|
+
],
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Get recordings list resource
|
|
390
|
+
*/
|
|
391
|
+
async getRecordingsList() {
|
|
392
|
+
const recordings = await this.pica.recordings.list({ limit: 1000 });
|
|
393
|
+
return {
|
|
394
|
+
contents: [
|
|
395
|
+
{
|
|
396
|
+
uri: "recordings://list",
|
|
397
|
+
mimeType: "application/json",
|
|
398
|
+
text: JSON.stringify({
|
|
399
|
+
total: recordings.length,
|
|
400
|
+
recordings: recordings.map((recording) => ({
|
|
401
|
+
id: recording.id,
|
|
402
|
+
title: recording.title,
|
|
403
|
+
isrc: recording.isrc,
|
|
404
|
+
duration_seconds: recording.duration_seconds,
|
|
405
|
+
work_id: recording.work_id,
|
|
406
|
+
})),
|
|
407
|
+
}, null, 2),
|
|
408
|
+
},
|
|
409
|
+
],
|
|
410
|
+
};
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Get catalog statistics resource
|
|
414
|
+
*/
|
|
415
|
+
async getCatalogStats() {
|
|
416
|
+
const [works, people, recordings] = await Promise.all([
|
|
417
|
+
this.pica.works.list({ limit: 1000 }),
|
|
418
|
+
this.pica.people.list({ limit: 1000 }),
|
|
419
|
+
this.pica.recordings.list({ limit: 1000 }),
|
|
420
|
+
]);
|
|
421
|
+
const stats = {
|
|
422
|
+
overview: {
|
|
423
|
+
total_works: works.length,
|
|
424
|
+
total_people: people.length,
|
|
425
|
+
total_recordings: recordings.length,
|
|
426
|
+
last_updated: new Date().toISOString(),
|
|
427
|
+
},
|
|
428
|
+
works: {
|
|
429
|
+
total: works.length,
|
|
430
|
+
verified: works.filter((w) => w.is_verified).length,
|
|
431
|
+
unverified: works.filter((w) => !w.is_verified).length,
|
|
432
|
+
with_iswc: works.filter((w) => w.iswc).length,
|
|
433
|
+
by_type: {
|
|
434
|
+
composition: works.filter((w) => w.work_type === "composition")
|
|
435
|
+
.length,
|
|
436
|
+
arrangement: works.filter((w) => w.work_type === "arrangement")
|
|
437
|
+
.length,
|
|
438
|
+
adaptation: works.filter((w) => w.work_type === "adaptation").length,
|
|
439
|
+
translation: works.filter((w) => w.work_type === "translation")
|
|
440
|
+
.length,
|
|
441
|
+
},
|
|
442
|
+
},
|
|
443
|
+
people: {
|
|
444
|
+
total: people.length,
|
|
445
|
+
with_email: people.filter((p) => p.email).length,
|
|
446
|
+
with_isni: people.filter((p) => p.isni).length,
|
|
447
|
+
with_musicbrainz: people.filter((p) => p.musicbrainz_id).length,
|
|
448
|
+
},
|
|
449
|
+
recordings: {
|
|
450
|
+
total: recordings.length,
|
|
451
|
+
with_isrc: recordings.filter((r) => r.isrc).length,
|
|
452
|
+
},
|
|
453
|
+
};
|
|
454
|
+
return {
|
|
455
|
+
contents: [
|
|
456
|
+
{
|
|
457
|
+
uri: "catalog://stats",
|
|
458
|
+
mimeType: "application/json",
|
|
459
|
+
text: JSON.stringify(stats, null, 2),
|
|
460
|
+
},
|
|
461
|
+
],
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Get catalog health (PICA Score) resource
|
|
466
|
+
*/
|
|
467
|
+
async getCatalogHealth() {
|
|
468
|
+
const score = await this.pica.picaScore.get();
|
|
469
|
+
return {
|
|
470
|
+
contents: [
|
|
471
|
+
{
|
|
472
|
+
uri: "catalog://health",
|
|
473
|
+
mimeType: "application/json",
|
|
474
|
+
text: JSON.stringify(score, null, 2),
|
|
475
|
+
},
|
|
476
|
+
],
|
|
477
|
+
};
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Get workspace context resource — aggregated orientation for agents
|
|
481
|
+
*/
|
|
482
|
+
async getWorkspaceContext() {
|
|
483
|
+
const context = await this.pica.workspace.getContext();
|
|
484
|
+
return {
|
|
485
|
+
contents: [
|
|
486
|
+
{
|
|
487
|
+
uri: "workspace://context",
|
|
488
|
+
mimeType: "application/json",
|
|
489
|
+
text: JSON.stringify(context, null, 2),
|
|
490
|
+
},
|
|
491
|
+
],
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Get recent events resource — webhook deliveries
|
|
496
|
+
*/
|
|
497
|
+
async getRecentEvents() {
|
|
498
|
+
const events = await this.pica.workspace.getRecentEvents(20);
|
|
499
|
+
return {
|
|
500
|
+
contents: [
|
|
501
|
+
{
|
|
502
|
+
uri: "events://recent",
|
|
503
|
+
mimeType: "application/json",
|
|
504
|
+
text: JSON.stringify(events, null, 2),
|
|
505
|
+
},
|
|
506
|
+
],
|
|
507
|
+
};
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const WITHPICA_PRIMER = "# PICA \u2014 Music Catalog Management Platform\n\nPICA helps music creators and publishers manage their catalog metadata,\ntrack royalties, and prepare works for registration with collection societies.\n\n## Core Entities\n\n### Work\nA musical composition (song, piece, library track). The central entity.\n- Has: title, ISWC, work_type (song/library/demo), genre, mood, BPM, key\n- Relationships: has many credits (writers/composers), has many recordings,\n has many agreements, may have audio files, may have multimedia\n- Identifiers: ISWC (global), Tunecode (PRS), CAE/IPI (writer)\n\n### Person\nA human involved in music \u2014 writer, composer, performer, producer, publisher.\n- Has: name, email, IPI number, ISNI, MusicBrainz ID, PRO affiliation\n- Relationships: credited on many works, may have recordings, may have agreements\n- Can be enriched via: ISNI, MusicBrainz, Wikidata\n\n### Recording\nA specific audio capture of a work \u2014 the master/sound recording side.\n- Has: title, ISRC, duration, artist, label\n- Relationships: belongs to one work, has credits (performers/producers)\n- Distinct from the work: a work is the composition, a recording is the performance\n\n### Agreement\nA contract governing rights to works \u2014 publishing, sync, distribution.\n- Has: title, type, parties, dates, territory, terms\n- Relationships: covers many works\n- Types: publishing_admin, co_publishing, master_recording, sub_publishing,\n admin_only, distribution, library_music, production, artist_contract,\n termination, report, other\n\n### Import Document\nA canonical representation of an ingested file (royalty statement, CSV import).\n- Has: source (16 formats \u2014 PROs: PRS, ASCAP, BMI, SESAC, SOCAN, APRA, GEMA, SACEM; NROs: PPL, SoundExchange, GVL; Mechanical: MCPS; Distributors: DistroKid, TuneCore, CD Baby; Revenue: YouTube Content ID), period, line items, field mappings, warnings\n- Immutable snapshot of the import event \u2014 not a live view\n- Use pica_import_documents_list to find them, pica_import_documents_get to read\n\n## First Connection\n\nIf you're connecting to this workspace for the first time or don't know where to start,\ninvoke the **workspace-autopilot** prompt. It reads the workspace state and routes you\nto the most valuable workflow automatically.\n\n## Recommended Workflows\n\n1. **Catalog audit**: pica_catalog_stats \u2192 pica_works_query({ health_filter: \"needs_attention\" }) \u2192 pica_works_inspect({ sections: [\"completeness\"] })\n2. **Enrichment**: pica_enrichment_candidates \u2192 pica_resolve_work (fans out across Spotify/MLC/MusicBrainz/etc.) \u2192 pica_works_inspect (verify)\n3. **Statement reconciliation**: pica_import_documents_query \u2192 pica_import_documents_inspect({ sections: [\"diff\"] })\n4. **Duplicate cleanup**: pica_find_duplicates \u2192 review \u2192 pica_merge_duplicates\n5. **Registration readiness**: pica_works_inspect({ sections: [\"registration\"] }) \u2192 fix gaps \u2192 pica_export_song_registration\n\n## Key Concepts\n\n- **Organisation**: Multi-tenant \u2014 all data scoped to one org. Never cross org boundaries.\n- **PICA Score**: Composite catalog legibility index (0-100, grade A-F). Four pillars:\n identification, documentation, registration, completeness.\n- **Enrichment cascade**: When an identifier is added, external sources\n (MusicBrainz, ISNI, MLC) are queried automatically to fill gaps.\n- **Credits**: Work credits (writers/composers with splits) are distinct from\n recording credits (performers/producers). Different tables, different role enums.\n Work credit roles: writer, composer, arranger, lyricist, producer, performer.\n Recording credit roles: Writer, Composer, Producer, Performer (PascalCase).\n";
|
|
2
|
+
//# sourceMappingURL=llms-primer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-primer.d.ts","sourceRoot":"","sources":["../../src/resources/llms-primer.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,0qHAiE3B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
export const WITHPICA_PRIMER = `# PICA — Music Catalog Management Platform
|
|
3
|
+
|
|
4
|
+
PICA helps music creators and publishers manage their catalog metadata,
|
|
5
|
+
track royalties, and prepare works for registration with collection societies.
|
|
6
|
+
|
|
7
|
+
## Core Entities
|
|
8
|
+
|
|
9
|
+
### Work
|
|
10
|
+
A musical composition (song, piece, library track). The central entity.
|
|
11
|
+
- Has: title, ISWC, work_type (song/library/demo), genre, mood, BPM, key
|
|
12
|
+
- Relationships: has many credits (writers/composers), has many recordings,
|
|
13
|
+
has many agreements, may have audio files, may have multimedia
|
|
14
|
+
- Identifiers: ISWC (global), Tunecode (PRS), CAE/IPI (writer)
|
|
15
|
+
|
|
16
|
+
### Person
|
|
17
|
+
A human involved in music — writer, composer, performer, producer, publisher.
|
|
18
|
+
- Has: name, email, IPI number, ISNI, MusicBrainz ID, PRO affiliation
|
|
19
|
+
- Relationships: credited on many works, may have recordings, may have agreements
|
|
20
|
+
- Can be enriched via: ISNI, MusicBrainz, Wikidata
|
|
21
|
+
|
|
22
|
+
### Recording
|
|
23
|
+
A specific audio capture of a work — the master/sound recording side.
|
|
24
|
+
- Has: title, ISRC, duration, artist, label
|
|
25
|
+
- Relationships: belongs to one work, has credits (performers/producers)
|
|
26
|
+
- Distinct from the work: a work is the composition, a recording is the performance
|
|
27
|
+
|
|
28
|
+
### Agreement
|
|
29
|
+
A contract governing rights to works — publishing, sync, distribution.
|
|
30
|
+
- Has: title, type, parties, dates, territory, terms
|
|
31
|
+
- Relationships: covers many works
|
|
32
|
+
- Types: publishing_admin, co_publishing, master_recording, sub_publishing,
|
|
33
|
+
admin_only, distribution, library_music, production, artist_contract,
|
|
34
|
+
termination, report, other
|
|
35
|
+
|
|
36
|
+
### Import Document
|
|
37
|
+
A canonical representation of an ingested file (royalty statement, CSV import).
|
|
38
|
+
- Has: source (16 formats — PROs: PRS, ASCAP, BMI, SESAC, SOCAN, APRA, GEMA, SACEM; NROs: PPL, SoundExchange, GVL; Mechanical: MCPS; Distributors: DistroKid, TuneCore, CD Baby; Revenue: YouTube Content ID), period, line items, field mappings, warnings
|
|
39
|
+
- Immutable snapshot of the import event — not a live view
|
|
40
|
+
- Use pica_import_documents_list to find them, pica_import_documents_get to read
|
|
41
|
+
|
|
42
|
+
## First Connection
|
|
43
|
+
|
|
44
|
+
If you're connecting to this workspace for the first time or don't know where to start,
|
|
45
|
+
invoke the **workspace-autopilot** prompt. It reads the workspace state and routes you
|
|
46
|
+
to the most valuable workflow automatically.
|
|
47
|
+
|
|
48
|
+
## Recommended Workflows
|
|
49
|
+
|
|
50
|
+
1. **Catalog audit**: pica_catalog_stats → pica_works_query({ health_filter: "needs_attention" }) → pica_works_inspect({ sections: ["completeness"] })
|
|
51
|
+
2. **Enrichment**: pica_enrichment_candidates → pica_resolve_work (fans out across Spotify/MLC/MusicBrainz/etc.) → pica_works_inspect (verify)
|
|
52
|
+
3. **Statement reconciliation**: pica_import_documents_query → pica_import_documents_inspect({ sections: ["diff"] })
|
|
53
|
+
4. **Duplicate cleanup**: pica_find_duplicates → review → pica_merge_duplicates
|
|
54
|
+
5. **Registration readiness**: pica_works_inspect({ sections: ["registration"] }) → fix gaps → pica_export_song_registration
|
|
55
|
+
|
|
56
|
+
## Key Concepts
|
|
57
|
+
|
|
58
|
+
- **Organisation**: Multi-tenant — all data scoped to one org. Never cross org boundaries.
|
|
59
|
+
- **PICA Score**: Composite catalog legibility index (0-100, grade A-F). Four pillars:
|
|
60
|
+
identification, documentation, registration, completeness.
|
|
61
|
+
- **Enrichment cascade**: When an identifier is added, external sources
|
|
62
|
+
(MusicBrainz, ISNI, MLC) are queried automatically to fill gaps.
|
|
63
|
+
- **Credits**: Work credits (writers/composers with splits) are distinct from
|
|
64
|
+
recording credits (performers/producers). Different tables, different role enums.
|
|
65
|
+
Work credit roles: writer, composer, arranger, lyricist, producer, performer.
|
|
66
|
+
Recording credit roles: Writer, Composer, Producer, Performer (PascalCase).
|
|
67
|
+
`;
|
|
68
|
+
//# sourceMappingURL=llms-primer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-primer.js","sourceRoot":"","sources":["../../src/resources/llms-primer.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiE9B,CAAC"}
|