@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 @@
|
|
|
1
|
+
{"version":3,"file":"custody.d.ts","sourceRoot":"","sources":["../../src/tools/custody.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAO3E,qBAAa,YAAY;IACvB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA+N3D,KAAK;YAYL,OAAO;YAeP,IAAI;YA0BJ,OAAO;YAeP,cAAc;YAuBd,SAAS;CAgBxB"}
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatSuccess, withBillingGate, } from "@withpica/mcp-utils";
|
|
3
|
+
export class CustodyTools {
|
|
4
|
+
pica;
|
|
5
|
+
constructor(pica) {
|
|
6
|
+
this.pica = pica;
|
|
7
|
+
}
|
|
8
|
+
getTools() {
|
|
9
|
+
return [
|
|
10
|
+
{
|
|
11
|
+
definition: {
|
|
12
|
+
name: "pica_custody_claim",
|
|
13
|
+
description: "Request custody of a work's composition or master chain. " +
|
|
14
|
+
"If another org currently holds custody, creates a pending claim; the current " +
|
|
15
|
+
"custodian has 7 days to accept, decline, or dispute before the claim auto-approves. " +
|
|
16
|
+
"If you already hold custody, this errors. Admin/owner access required.",
|
|
17
|
+
workflows: "infrastructure",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
work_id: {
|
|
22
|
+
type: "string",
|
|
23
|
+
description: "UUID of the work to claim.",
|
|
24
|
+
},
|
|
25
|
+
chain: {
|
|
26
|
+
type: "string",
|
|
27
|
+
enum: ["composition", "master"],
|
|
28
|
+
description: "'composition' = publishing rights; 'master' = recording rights.",
|
|
29
|
+
},
|
|
30
|
+
reason: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Optional freetext shown to the current custodian in the notification.",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
required: ["work_id", "chain"],
|
|
36
|
+
},
|
|
37
|
+
annotations: {
|
|
38
|
+
title: "claim custody",
|
|
39
|
+
destructiveHint: false,
|
|
40
|
+
idempotentHint: false,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
executor: withBillingGate(this.pica, "custody claim", this.claim.bind(this)),
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
definition: {
|
|
47
|
+
name: "pica_custody_respond",
|
|
48
|
+
description: "Respond to an incoming custody claim. Actions: 'accept' transfers custody " +
|
|
49
|
+
"to the claimant; 'decline' rejects the claim (custody unchanged); 'dispute' " +
|
|
50
|
+
"freezes the claim for human review. reason is required for dispute. Only the " +
|
|
51
|
+
"current custodian can accept or decline; the custodian OR any credited party " +
|
|
52
|
+
"can dispute. Admin/owner access required.",
|
|
53
|
+
workflows: "infrastructure",
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: "object",
|
|
56
|
+
properties: {
|
|
57
|
+
claim_id: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "UUID of the custody_claims row to respond to.",
|
|
60
|
+
},
|
|
61
|
+
action: {
|
|
62
|
+
type: "string",
|
|
63
|
+
enum: ["accept", "decline", "dispute"],
|
|
64
|
+
description: "How to respond to the claim",
|
|
65
|
+
},
|
|
66
|
+
reason: {
|
|
67
|
+
type: "string",
|
|
68
|
+
description: "Required when action='dispute'. Optional for decline.",
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
required: ["claim_id", "action"],
|
|
72
|
+
},
|
|
73
|
+
annotations: {
|
|
74
|
+
title: "respond to a custody claim",
|
|
75
|
+
destructiveHint: false,
|
|
76
|
+
idempotentHint: false,
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
executor: withBillingGate(this.pica, "custody response", this.respond.bind(this)),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
definition: {
|
|
83
|
+
name: "pica_custody_list",
|
|
84
|
+
description: "List custody claims for your catalog — both incoming " +
|
|
85
|
+
"(claims others filed against your custody) and outgoing (claims you filed). " +
|
|
86
|
+
"Defaults to pending claims only. Available to any authenticated org member.",
|
|
87
|
+
workflows: "infrastructure",
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {
|
|
91
|
+
direction: {
|
|
92
|
+
type: "string",
|
|
93
|
+
enum: ["incoming", "outgoing", "both"],
|
|
94
|
+
description: "Default: both.",
|
|
95
|
+
},
|
|
96
|
+
status: {
|
|
97
|
+
type: "string",
|
|
98
|
+
description: "Filter by status (pending|accepted|declined|disputed|auto_approved|withdrawn|expired|all). Default: pending.",
|
|
99
|
+
},
|
|
100
|
+
limit: {
|
|
101
|
+
type: "number",
|
|
102
|
+
description: "1..200. Default 50.",
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
annotations: {
|
|
107
|
+
title: "list custody claims",
|
|
108
|
+
readOnlyHint: true,
|
|
109
|
+
idempotentHint: true,
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
executor: this.list.bind(this),
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
definition: {
|
|
116
|
+
name: "pica_custody_history",
|
|
117
|
+
description: "Return custody-related provenance_history rows for a work. Every row " +
|
|
118
|
+
"includes an attestation_hash so the history is cryptographically anchored. " +
|
|
119
|
+
"Use this to audit who changed custody when. Available to any authenticated org member.",
|
|
120
|
+
workflows: "infrastructure",
|
|
121
|
+
inputSchema: {
|
|
122
|
+
type: "object",
|
|
123
|
+
properties: {
|
|
124
|
+
work_id: {
|
|
125
|
+
type: "string",
|
|
126
|
+
description: "UUID of the work whose history to fetch.",
|
|
127
|
+
},
|
|
128
|
+
change_type: {
|
|
129
|
+
type: "string",
|
|
130
|
+
description: "Filter to one change_type (custody_claimed|custody_transferred|custody_released|custody_expired|custody_transfer_auto) or 'all'. Default 'all'.",
|
|
131
|
+
},
|
|
132
|
+
limit: {
|
|
133
|
+
type: "number",
|
|
134
|
+
description: "1..500. Default 100.",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
required: ["work_id"],
|
|
138
|
+
},
|
|
139
|
+
annotations: {
|
|
140
|
+
title: "custody history",
|
|
141
|
+
readOnlyHint: true,
|
|
142
|
+
idempotentHint: true,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
executor: this.history.bind(this),
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
definition: {
|
|
149
|
+
name: "pica_custody_resolve_pending",
|
|
150
|
+
description: "Preview works where this org (or a specific global_publisher_id) is named " +
|
|
151
|
+
"as canonical custodian via work_custodians.custodian_global_publisher_id but " +
|
|
152
|
+
"has not yet been claimed via a PICA org membership. The 'Warner Chappell signs " +
|
|
153
|
+
"up and finds 38 works waiting' view. Read-only — use pica_custody_reconcile " +
|
|
154
|
+
"to actually claim them. Admin/owner access required.",
|
|
155
|
+
workflows: "infrastructure",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
type: "object",
|
|
158
|
+
properties: {
|
|
159
|
+
global_publisher_id: {
|
|
160
|
+
type: "string",
|
|
161
|
+
description: "Optional. If omitted, uses the caller org's own global_publisher_id bridge.",
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
annotations: {
|
|
166
|
+
title: "resolve pending custody",
|
|
167
|
+
readOnlyHint: true,
|
|
168
|
+
idempotentHint: true,
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
executor: withBillingGate(this.pica, "custody resolve", this.resolvePending.bind(this)),
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
definition: {
|
|
175
|
+
name: "pica_custody_reconcile",
|
|
176
|
+
description: "Bulk-claim every work where your catalog (or a specific global_publisher_id) " +
|
|
177
|
+
"is named as canonical custodian but hasn't been locally claimed yet. Writes " +
|
|
178
|
+
"one custody_claims row per matching work. Default is dry-run — pass confirm=true " +
|
|
179
|
+
"to execute. Admin/owner access required.",
|
|
180
|
+
workflows: "infrastructure",
|
|
181
|
+
inputSchema: {
|
|
182
|
+
type: "object",
|
|
183
|
+
properties: {
|
|
184
|
+
global_publisher_id: { type: "string", description: "UUID of the global publisher to reconcile claims for. If omitted, reconciles for all publishers linked to your catalog." },
|
|
185
|
+
confirm: {
|
|
186
|
+
type: "boolean",
|
|
187
|
+
description: "Required to actually write claims. Default false = dry-run.",
|
|
188
|
+
},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
annotations: {
|
|
192
|
+
title: "reconcile custody",
|
|
193
|
+
destructiveHint: false,
|
|
194
|
+
idempotentHint: false,
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
executor: withBillingGate(this.pica, "custody reconcile", this.reconcile.bind(this)),
|
|
198
|
+
},
|
|
199
|
+
];
|
|
200
|
+
}
|
|
201
|
+
async claim(args) {
|
|
202
|
+
const data = await this.pica.custody.claim({
|
|
203
|
+
work_id: args.work_id,
|
|
204
|
+
chain: args.chain,
|
|
205
|
+
reason: args.reason,
|
|
206
|
+
});
|
|
207
|
+
return formatSuccess(`Custody claim created (${args.chain} chain). The current custodian has 7 days to respond before the claim auto-approves.`, data);
|
|
208
|
+
}
|
|
209
|
+
async respond(args) {
|
|
210
|
+
const data = await this.pica.custody.respond({
|
|
211
|
+
claim_id: args.claim_id,
|
|
212
|
+
action: args.action,
|
|
213
|
+
reason: args.reason,
|
|
214
|
+
});
|
|
215
|
+
const verb = args.action === "accept"
|
|
216
|
+
? "accepted"
|
|
217
|
+
: args.action === "decline"
|
|
218
|
+
? "declined"
|
|
219
|
+
: "disputed";
|
|
220
|
+
return formatSuccess(`Custody claim ${verb}.`, data);
|
|
221
|
+
}
|
|
222
|
+
async list(args) {
|
|
223
|
+
const data = await this.pica.custody.list({
|
|
224
|
+
direction: args.direction,
|
|
225
|
+
status: args.status,
|
|
226
|
+
limit: args.limit,
|
|
227
|
+
});
|
|
228
|
+
const incoming = data?.incoming ?? [];
|
|
229
|
+
const outgoing = data?.outgoing ?? [];
|
|
230
|
+
const hints = [];
|
|
231
|
+
if (incoming.length > 0) {
|
|
232
|
+
hints.push({
|
|
233
|
+
gap: "custody_claims_incoming",
|
|
234
|
+
suggestion: `You have ${incoming.length} incoming custody claim(s) — respond via pica_custody_respond before the 7-day window closes.`,
|
|
235
|
+
count: incoming.length,
|
|
236
|
+
severity: "important",
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return formatSuccess(`Found ${incoming.length} incoming + ${outgoing.length} outgoing custody claim(s).`, data, hints);
|
|
240
|
+
}
|
|
241
|
+
async history(args) {
|
|
242
|
+
const data = await this.pica.custody.history({
|
|
243
|
+
work_id: args.work_id,
|
|
244
|
+
change_type: args.change_type,
|
|
245
|
+
limit: args.limit,
|
|
246
|
+
});
|
|
247
|
+
const count = data?.count ?? 0;
|
|
248
|
+
return formatSuccess(count > 0
|
|
249
|
+
? `Returned ${count} custody history row(s) for the work.`
|
|
250
|
+
: "No custody history rows for this work.", data);
|
|
251
|
+
}
|
|
252
|
+
async resolvePending(args) {
|
|
253
|
+
const data = await this.pica.custody.resolvePending({
|
|
254
|
+
global_publisher_id: args.global_publisher_id,
|
|
255
|
+
});
|
|
256
|
+
const count = data?.count ?? 0;
|
|
257
|
+
const hints = [];
|
|
258
|
+
if (count > 0) {
|
|
259
|
+
hints.push({
|
|
260
|
+
gap: "custody_inheritable",
|
|
261
|
+
suggestion: `${count} work(s) reference your publisher identity but haven't been claimed — run pica_custody_reconcile with confirm=true to claim them in bulk.`,
|
|
262
|
+
count,
|
|
263
|
+
severity: "important",
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
return formatSuccess(count > 0
|
|
267
|
+
? `${count} inheritable work(s) found.`
|
|
268
|
+
: "No inheritable works found.", data, hints);
|
|
269
|
+
}
|
|
270
|
+
async reconcile(args) {
|
|
271
|
+
const data = await this.pica.custody.reconcile({
|
|
272
|
+
global_publisher_id: args.global_publisher_id,
|
|
273
|
+
confirm: args.confirm === true,
|
|
274
|
+
});
|
|
275
|
+
if (data?.dry_run) {
|
|
276
|
+
return formatSuccess(`Dry run — ${data.would_claim ?? 0} claim(s) would be created. Pass confirm=true to execute.`, data);
|
|
277
|
+
}
|
|
278
|
+
return formatSuccess(`Reconciliation complete — ${data?.claimed ?? 0} claimed, ${data?.failed ?? 0} failed.`, data);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
//# sourceMappingURL=custody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custody.js","sourceRoot":"","sources":["../../src/tools/custody.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard & Discovery Tools — surface what needs attention, what PICA found, and daily briefings
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class DashboardTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private claimCredit;
|
|
14
|
+
private claimCustody;
|
|
15
|
+
private claimArtist;
|
|
16
|
+
private queryDiscoveries;
|
|
17
|
+
private reviewDiscovery;
|
|
18
|
+
private attentionItems;
|
|
19
|
+
private briefing;
|
|
20
|
+
private pulse;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=dashboard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.d.ts","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AActE,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAsN3D,WAAW;YAYX,YAAY;YAYZ,WAAW;YAYX,gBAAgB;YA8BhB,eAAe;YAaf,cAAc;YAYd,QAAQ;YAMR,KAAK;CAIpB"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatAsText, formatSuccess, formatStructuredList, withBillingGate, CLAIM_CREDIT_WRITE_PROPERTIES, CLAIM_CREDIT_REQUIRED, CLAIM_CUSTODY_WRITE_PROPERTIES, CLAIM_CUSTODY_REQUIRED, CLAIM_ARTIST_WRITE_PROPERTIES, CLAIM_ARTIST_REQUIRED, } from "@withpica/mcp-utils";
|
|
3
|
+
export class DashboardTools {
|
|
4
|
+
pica;
|
|
5
|
+
constructor(pica) {
|
|
6
|
+
this.pica = pica;
|
|
7
|
+
}
|
|
8
|
+
getTools() {
|
|
9
|
+
return [
|
|
10
|
+
// --- Discoveries ---
|
|
11
|
+
{
|
|
12
|
+
definition: {
|
|
13
|
+
name: "pica_discoveries_query",
|
|
14
|
+
description: "List pending discoveries in your catalog across credits, custody, " +
|
|
15
|
+
"and artist links. Each row includes a `type` field " +
|
|
16
|
+
"('credit' | 'custody' | 'artist') plus the discovery-specific " +
|
|
17
|
+
"fields. Use the row id with the matching pica_claim_* tool to " +
|
|
18
|
+
"resolve. Sorted by created_at DESC.",
|
|
19
|
+
workflows: ["claim-required"],
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: "object",
|
|
22
|
+
properties: {
|
|
23
|
+
status: {
|
|
24
|
+
type: "string",
|
|
25
|
+
enum: ["all", "pending", "reviewed"],
|
|
26
|
+
description: "Filter by status: 'all' for everything, 'pending' for items needing review, 'reviewed' for already-handled (default: all)",
|
|
27
|
+
},
|
|
28
|
+
limit: {
|
|
29
|
+
type: "number",
|
|
30
|
+
description: "Max results (default 50)",
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
executor: this.queryDiscoveries.bind(this),
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
definition: {
|
|
39
|
+
name: "pica_discoveries_review",
|
|
40
|
+
description: "Accept or reject a pending discovery. " +
|
|
41
|
+
"Accepted discoveries update your catalog automatically.",
|
|
42
|
+
workflows: ["claim-required"],
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: "object",
|
|
45
|
+
properties: {
|
|
46
|
+
discovery_id: {
|
|
47
|
+
type: "string",
|
|
48
|
+
description: "The discovery ID to review",
|
|
49
|
+
},
|
|
50
|
+
status: {
|
|
51
|
+
type: "string",
|
|
52
|
+
enum: ["accepted", "rejected"],
|
|
53
|
+
description: "Accept or reject the discovery",
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
required: ["discovery_id", "status"],
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
executor: withBillingGate(this.pica, "discovery review", this.reviewDiscovery.bind(this)),
|
|
60
|
+
},
|
|
61
|
+
// --- ADR-189 Phase 4: Activation-loop claim tools ---
|
|
62
|
+
{
|
|
63
|
+
definition: {
|
|
64
|
+
name: "pica_claim_credit",
|
|
65
|
+
description: "Claim a discovered songwriting / publishing credit into your catalog. " +
|
|
66
|
+
"Drains the pending discovered_credits row and inserts a work_credits row " +
|
|
67
|
+
"in your catalog, giving you 'view' access to the linked work. " +
|
|
68
|
+
"Rate-limited to 20 claims per hour. Idempotency: re-claiming an already-resolved " +
|
|
69
|
+
"discovery returns DISCOVERY_ALREADY_RESOLVED (409) — re-run discovery first.",
|
|
70
|
+
annotations: {
|
|
71
|
+
title: "claim discovered credit",
|
|
72
|
+
readOnlyHint: false,
|
|
73
|
+
destructiveHint: false,
|
|
74
|
+
idempotentHint: false,
|
|
75
|
+
openWorldHint: false,
|
|
76
|
+
},
|
|
77
|
+
workflows: ["claim-required"],
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: CLAIM_CREDIT_WRITE_PROPERTIES,
|
|
81
|
+
required: [...CLAIM_CREDIT_REQUIRED],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
executor: withBillingGate(this.pica, "credit claim", this.claimCredit.bind(this)),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
definition: {
|
|
88
|
+
name: "pica_claim_custody",
|
|
89
|
+
description: "Claim a discovered custody/ownership candidate (composition or master side) for a work. " +
|
|
90
|
+
"Drains the pending discovered_custody row into a pending custody_claims row and schedules " +
|
|
91
|
+
"a +72h silent-consent auto-approve via scheduled_notifications. The current custodian keeps " +
|
|
92
|
+
"the catalog row until the T+72h window elapses. " +
|
|
93
|
+
"Rate-limited to 20 claims per hour. " +
|
|
94
|
+
"Idempotency: re-claiming an already-resolved discovery returns DISCOVERY_ALREADY_RESOLVED (409) -- " +
|
|
95
|
+
"re-run discovery first.",
|
|
96
|
+
annotations: {
|
|
97
|
+
title: "claim discovered custody",
|
|
98
|
+
readOnlyHint: false,
|
|
99
|
+
destructiveHint: false,
|
|
100
|
+
idempotentHint: false,
|
|
101
|
+
openWorldHint: false,
|
|
102
|
+
},
|
|
103
|
+
workflows: ["claim-required"],
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: "object",
|
|
106
|
+
properties: CLAIM_CUSTODY_WRITE_PROPERTIES,
|
|
107
|
+
required: [...CLAIM_CUSTODY_REQUIRED],
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
executor: withBillingGate(this.pica, "custody claim", this.claimCustody.bind(this)),
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
definition: {
|
|
114
|
+
name: "pica_claim_artist",
|
|
115
|
+
description: "Claim a discovered artist link on a pending discovered_artists row. " +
|
|
116
|
+
"INSTANT path: identity evidence was validated at discovery time, so this " +
|
|
117
|
+
"tool writes to work_claims (artist_claim_status / claimed_by_person_id / " +
|
|
118
|
+
"claim_confirmed_at) and inserts a performer work_credits row in one go — " +
|
|
119
|
+
"no +72h waiting window. Requires your identity to already be linked via " +
|
|
120
|
+
"pica_update_my_identity. " +
|
|
121
|
+
"Rate-limited to 20 claims per hour. " +
|
|
122
|
+
"Refuses (409 ADMIN_REVIEW_IN_PROGRESS) when an open artist_claims review " +
|
|
123
|
+
"row exists for the same (work, person) — resolve the review first. " +
|
|
124
|
+
"Idempotency: re-claiming an already-resolved discovery returns " +
|
|
125
|
+
"DISCOVERY_ALREADY_RESOLVED (409) -- re-run discovery first.",
|
|
126
|
+
annotations: {
|
|
127
|
+
title: "claim discovered artist",
|
|
128
|
+
readOnlyHint: false,
|
|
129
|
+
destructiveHint: false,
|
|
130
|
+
idempotentHint: false,
|
|
131
|
+
openWorldHint: false,
|
|
132
|
+
},
|
|
133
|
+
workflows: ["claim-required"],
|
|
134
|
+
inputSchema: {
|
|
135
|
+
type: "object",
|
|
136
|
+
properties: CLAIM_ARTIST_WRITE_PROPERTIES,
|
|
137
|
+
required: [...CLAIM_ARTIST_REQUIRED],
|
|
138
|
+
},
|
|
139
|
+
},
|
|
140
|
+
executor: withBillingGate(this.pica, "artist claim", this.claimArtist.bind(this)),
|
|
141
|
+
},
|
|
142
|
+
// --- Dashboard ---
|
|
143
|
+
{
|
|
144
|
+
definition: {
|
|
145
|
+
name: "pica_dashboard_attention",
|
|
146
|
+
description: "What needs my attention? Shows items requiring action — " +
|
|
147
|
+
"incomplete works, unsigned agreements, overdue tasks, " +
|
|
148
|
+
"pending invites, and quality issues.",
|
|
149
|
+
workflows: "infrastructure",
|
|
150
|
+
inputSchema: {
|
|
151
|
+
type: "object",
|
|
152
|
+
properties: {
|
|
153
|
+
door: {
|
|
154
|
+
type: "string",
|
|
155
|
+
enum: ["respond", "catalog"],
|
|
156
|
+
description: "Focus area: 'respond' for urgent items, 'catalog' for data quality",
|
|
157
|
+
},
|
|
158
|
+
limit: {
|
|
159
|
+
type: "number",
|
|
160
|
+
description: "Max items (default 10)",
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
executor: this.attentionItems.bind(this),
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
definition: {
|
|
169
|
+
name: "pica_dashboard_briefing",
|
|
170
|
+
description: "Get your daily briefing — a summary of catalog health, " +
|
|
171
|
+
"recent activity, upcoming deadlines, and recommended actions.",
|
|
172
|
+
workflows: "infrastructure",
|
|
173
|
+
inputSchema: {
|
|
174
|
+
type: "object",
|
|
175
|
+
properties: {},
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
executor: this.briefing.bind(this),
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
definition: {
|
|
182
|
+
name: "pica_dashboard_pulse",
|
|
183
|
+
description: "Get the pulse of your catalog — works needing attention, " +
|
|
184
|
+
"upcoming deadlines, provenance status, and background task progress.",
|
|
185
|
+
workflows: "infrastructure",
|
|
186
|
+
inputSchema: {
|
|
187
|
+
type: "object",
|
|
188
|
+
properties: {},
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
executor: this.pulse.bind(this),
|
|
192
|
+
},
|
|
193
|
+
];
|
|
194
|
+
}
|
|
195
|
+
async claimCredit(args) {
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
197
|
+
const pica = this.pica;
|
|
198
|
+
const result = await pica.discoveries.claimCredit(args.id);
|
|
199
|
+
return formatSuccess(result.is_first_claim
|
|
200
|
+
? "first credit claimed — welcome to your catalog"
|
|
201
|
+
: "credit claimed", result);
|
|
202
|
+
}
|
|
203
|
+
async claimCustody(args) {
|
|
204
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
205
|
+
const pica = this.pica;
|
|
206
|
+
const result = await pica.discoveries.claimCustody(args.id);
|
|
207
|
+
return formatSuccess(result.is_first_claim
|
|
208
|
+
? "first custody claim submitted — auto-approves in 72h unless disputed"
|
|
209
|
+
: "custody claim submitted — auto-approves in 72h unless disputed", result);
|
|
210
|
+
}
|
|
211
|
+
async claimArtist(args) {
|
|
212
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
213
|
+
const pica = this.pica;
|
|
214
|
+
const result = await pica.discoveries.claimArtist(args.id);
|
|
215
|
+
return formatSuccess(result.is_first_claim
|
|
216
|
+
? "first artist claim confirmed — welcome to your catalog"
|
|
217
|
+
: "artist claim confirmed", result);
|
|
218
|
+
}
|
|
219
|
+
async queryDiscoveries(args) {
|
|
220
|
+
const status = args.status || "all";
|
|
221
|
+
// "pending" delegates to the dedicated pending endpoint
|
|
222
|
+
if (status === "pending") {
|
|
223
|
+
const result = await this.pica.dashboard.pendingDiscoveries();
|
|
224
|
+
const items = result?.data || result || [];
|
|
225
|
+
return formatStructuredList(Array.isArray(items) ? items : [], "pending discovery");
|
|
226
|
+
}
|
|
227
|
+
// "all" or "reviewed" use the general discoveries endpoint
|
|
228
|
+
const result = await this.pica.dashboard.discoveries({
|
|
229
|
+
unread: status === "all" ? undefined : false,
|
|
230
|
+
limit: args.limit,
|
|
231
|
+
});
|
|
232
|
+
const items = result?.data || result || [];
|
|
233
|
+
const unreadCount = result?.unreadCount ?? 0;
|
|
234
|
+
return formatStructuredList(Array.isArray(items) ? items : [], "discovery", { unreadCount });
|
|
235
|
+
}
|
|
236
|
+
async reviewDiscovery(args) {
|
|
237
|
+
const result = await this.pica.dashboard.reviewDiscovery(args.discovery_id, args.status);
|
|
238
|
+
return formatSuccess(`Discovery ${args.discovery_id} ${args.status}`, result);
|
|
239
|
+
}
|
|
240
|
+
async attentionItems(args) {
|
|
241
|
+
const result = await this.pica.dashboard.attentionItems({
|
|
242
|
+
door: args.door,
|
|
243
|
+
limit: args.limit,
|
|
244
|
+
});
|
|
245
|
+
const items = result?.data?.items || result?.items || [];
|
|
246
|
+
return formatStructuredList(Array.isArray(items) ? items : [], "attention item");
|
|
247
|
+
}
|
|
248
|
+
async briefing(_args) {
|
|
249
|
+
const result = await this.pica.dashboard.briefing();
|
|
250
|
+
const insights = result?.data?.insights || result?.insights || result;
|
|
251
|
+
return formatSuccess("Daily briefing", insights);
|
|
252
|
+
}
|
|
253
|
+
async pulse(_args) {
|
|
254
|
+
const result = await this.pica.dashboard.pulse();
|
|
255
|
+
return formatAsText(result);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tools/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Directory Tools — manage directory visibility and settings
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class DirectoryTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private directorySettings;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=directory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/tools/directory.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1D,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YA8D3D,iBAAiB;CAkDhC"}
|