@withpica/mcp-server 2.1.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/README.md +305 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +33 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/pica-sdk.d.ts +1162 -0
- package/dist/pica-sdk.d.ts.map +1 -0
- package/dist/pica-sdk.js +1371 -0
- package/dist/pica-sdk.js.map +1 -0
- package/dist/prompts/index.d.ts +78 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +513 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +64 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +310 -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 +67 -0
- package/dist/resources/llms-primer.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +140 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/agreement-types.d.ts +37 -0
- package/dist/tools/agreement-types.d.ts.map +1 -0
- package/dist/tools/agreement-types.js +579 -0
- package/dist/tools/agreement-types.js.map +1 -0
- package/dist/tools/agreements.d.ts +21 -0
- package/dist/tools/agreements.d.ts.map +1 -0
- package/dist/tools/agreements.js +328 -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 +126 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/assets.d.ts +23 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +220 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/audio-files.d.ts +21 -0
- package/dist/tools/audio-files.d.ts.map +1 -0
- package/dist/tools/audio-files.js +358 -0
- package/dist/tools/audio-files.js.map +1 -0
- package/dist/tools/bulk.d.ts +16 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +82 -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 +69 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/collaborators.d.ts +17 -0
- package/dist/tools/collaborators.d.ts.map +1 -0
- package/dist/tools/collaborators.js +133 -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 +86 -0
- package/dist/tools/comparisons.js.map +1 -0
- package/dist/tools/credits.d.ts +17 -0
- package/dist/tools/credits.d.ts.map +1 -0
- package/dist/tools/credits.js +136 -0
- package/dist/tools/credits.js.map +1 -0
- package/dist/tools/dashboard.d.ts +20 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +156 -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 +108 -0
- package/dist/tools/directory.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 +66 -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 +38 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/duplicates.d.ts +16 -0
- package/dist/tools/duplicates.d.ts.map +1 -0
- package/dist/tools/duplicates.js +72 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +23 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +207 -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 +155 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/health.d.ts +17 -0
- package/dist/tools/health.d.ts.map +1 -0
- package/dist/tools/health.js +69 -0
- package/dist/tools/health.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 +191 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +29 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +404 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +48 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +394 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations.d.ts +15 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +102 -0
- package/dist/tools/integrations.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 +121 -0
- package/dist/tools/memory.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 +293 -0
- package/dist/tools/multimedia.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 +126 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +17 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +117 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/people.d.ts +53 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +534 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/pica-score.d.ts +15 -0
- package/dist/tools/pica-score.d.ts.map +1 -0
- package/dist/tools/pica-score.js +30 -0
- package/dist/tools/pica-score.js.map +1 -0
- package/dist/tools/projects.d.ts +19 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +142 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/purchases.d.ts +15 -0
- package/dist/tools/purchases.d.ts.map +1 -0
- package/dist/tools/purchases.js +65 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recordings.d.ts +41 -0
- package/dist/tools/recordings.d.ts.map +1 -0
- package/dist/tools/recordings.js +293 -0
- package/dist/tools/recordings.js.map +1 -0
- package/dist/tools/registration.d.ts +16 -0
- package/dist/tools/registration.d.ts.map +1 -0
- package/dist/tools/registration.js +52 -0
- package/dist/tools/registration.js.map +1 -0
- package/dist/tools/releases.d.ts +18 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +138 -0
- package/dist/tools/releases.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 +263 -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 +117 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/send.d.ts +18 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +189 -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 +107 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/settings.d.ts +18 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +98 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/share-links.d.ts +19 -0
- package/dist/tools/share-links.d.ts.map +1 -0
- package/dist/tools/share-links.js +126 -0
- package/dist/tools/share-links.js.map +1 -0
- package/dist/tools/split-sheets.d.ts +24 -0
- package/dist/tools/split-sheets.d.ts.map +1 -0
- package/dist/tools/split-sheets.js +189 -0
- package/dist/tools/split-sheets.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 +139 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/tools/telegram.d.ts +20 -0
- package/dist/tools/telegram.d.ts.map +1 -0
- package/dist/tools/telegram.js +94 -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 +159 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +53 -0
- package/dist/tools/works.d.ts.map +1 -0
- package/dist/tools/works.js +517 -0
- package/dist/tools/works.js.map +1 -0
- package/dist/utils/credit-gate.d.ts +17 -0
- package/dist/utils/credit-gate.d.ts.map +1 -0
- package/dist/utils/credit-gate.js +111 -0
- package/dist/utils/credit-gate.js.map +1 -0
- package/dist/utils/errors.d.ts +29 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +114 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/formatting.d.ts +63 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +130 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/mpp.d.ts +78 -0
- package/dist/utils/mpp.d.ts.map +1 -0
- package/dist/utils/mpp.js +136 -0
- package/dist/utils/mpp.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Projects Tools — group works into projects (albums, EPs, compilations, or any collection)
|
|
3
|
+
*/
|
|
4
|
+
import { formatSuccess, formatStructuredList } from "../utils/formatting.js";
|
|
5
|
+
export class ProjectsTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
getTools() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
definition: {
|
|
14
|
+
name: "pica_projects_list",
|
|
15
|
+
description: "List projects — albums, EPs, compilations, or any collection of works.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
limit: {
|
|
20
|
+
type: "number",
|
|
21
|
+
description: "Max results to return (default 50)",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
executor: this.listProjects.bind(this),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
definition: {
|
|
30
|
+
name: "pica_projects_get",
|
|
31
|
+
description: "Get project details including linked works.",
|
|
32
|
+
inputSchema: {
|
|
33
|
+
type: "object",
|
|
34
|
+
properties: {
|
|
35
|
+
id: { type: "string", description: "Project ID" },
|
|
36
|
+
},
|
|
37
|
+
required: ["id"],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
executor: this.getProject.bind(this),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
definition: {
|
|
44
|
+
name: "pica_projects_create",
|
|
45
|
+
description: "Create a new project to organise your works — albums, EPs, compilations, or any collection.",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
name: {
|
|
50
|
+
type: "string",
|
|
51
|
+
description: "Project name",
|
|
52
|
+
},
|
|
53
|
+
project_type: {
|
|
54
|
+
type: "string",
|
|
55
|
+
description: "Type of project (e.g. album, ep, compilation, single, mixtape)",
|
|
56
|
+
},
|
|
57
|
+
description: {
|
|
58
|
+
type: "string",
|
|
59
|
+
description: "Optional project description",
|
|
60
|
+
},
|
|
61
|
+
work_ids: {
|
|
62
|
+
type: "array",
|
|
63
|
+
items: { type: "string" },
|
|
64
|
+
description: "Optional: work IDs to add to the project",
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: ["name"],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
executor: this.createProject.bind(this),
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
definition: {
|
|
74
|
+
name: "pica_projects_update",
|
|
75
|
+
description: "Update project details — name, type, description, or linked works.",
|
|
76
|
+
inputSchema: {
|
|
77
|
+
type: "object",
|
|
78
|
+
properties: {
|
|
79
|
+
id: { type: "string", description: "Project ID" },
|
|
80
|
+
name: { type: "string", description: "Updated project name" },
|
|
81
|
+
project_type: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "Updated project type",
|
|
84
|
+
},
|
|
85
|
+
description: {
|
|
86
|
+
type: "string",
|
|
87
|
+
description: "Updated description",
|
|
88
|
+
},
|
|
89
|
+
work_ids: {
|
|
90
|
+
type: "array",
|
|
91
|
+
items: { type: "string" },
|
|
92
|
+
description: "Updated list of work IDs",
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
required: ["id"],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
executor: this.updateProject.bind(this),
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
definition: {
|
|
102
|
+
name: "pica_projects_delete",
|
|
103
|
+
description: "Delete a project. Works linked to it are not deleted.",
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: "object",
|
|
106
|
+
properties: {
|
|
107
|
+
id: { type: "string", description: "Project ID to delete" },
|
|
108
|
+
},
|
|
109
|
+
required: ["id"],
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
executor: this.deleteProject.bind(this),
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
async listProjects(args) {
|
|
117
|
+
const result = await this.pica.projects.list({
|
|
118
|
+
limit: args.limit,
|
|
119
|
+
});
|
|
120
|
+
const projects = Array.isArray(result) ? result : [];
|
|
121
|
+
return formatStructuredList(projects, "project");
|
|
122
|
+
}
|
|
123
|
+
async getProject(args) {
|
|
124
|
+
const project = await this.pica.projects.get(args.id);
|
|
125
|
+
return formatSuccess("Project retrieved", project);
|
|
126
|
+
}
|
|
127
|
+
async createProject(args) {
|
|
128
|
+
const { id, ...data } = args;
|
|
129
|
+
const project = await this.pica.projects.create(data);
|
|
130
|
+
return formatSuccess("Project created", project);
|
|
131
|
+
}
|
|
132
|
+
async updateProject(args) {
|
|
133
|
+
const { id, ...updates } = args;
|
|
134
|
+
const project = await this.pica.projects.update(id, updates);
|
|
135
|
+
return formatSuccess("Project updated", project);
|
|
136
|
+
}
|
|
137
|
+
async deleteProject(args) {
|
|
138
|
+
await this.pica.projects.delete(args.id);
|
|
139
|
+
return formatSuccess(`Project ${args.id} deleted`);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=projects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE7E,MAAM,OAAO,aAAa;IAChB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,oBAAoB;oBAC1B,WAAW,EACT,wEAAwE;oBAC1E,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,KAAK,EAAE;gCACL,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,oCAAoC;6BAClD;yBACF;qBACF;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;aACvC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,mBAAmB;oBACzB,WAAW,EAAE,6CAA6C;oBAC1D,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;yBAClD;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EACT,6FAA6F;oBAC/F,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,IAAI,EAAE;gCACJ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,cAAc;6BAC5B;4BACD,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EACT,gEAAgE;6BACnE;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,8BAA8B;6BAC5C;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,0CAA0C;6BACxD;yBACF;wBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;qBACnB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aACxC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EACT,oEAAoE;oBACtE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;4BACjD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;4BAC7D,YAAY,EAAE;gCACZ,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,sBAAsB;6BACpC;4BACD,WAAW,EAAE;gCACX,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,qBAAqB;6BACnC;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,OAAO;gCACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,WAAW,EAAE,0BAA0B;6BACxC;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aACxC;YACD;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,sBAAsB;oBAC5B,WAAW,EAAE,uDAAuD;oBACpE,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;yBAC5D;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;aACxC;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAAyB;QAClD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3C,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,IAAyB;QAChD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAyB;QACnD,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAyB;QACnD,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,IAAyB;QACnD,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,aAAa,CAAC,WAAW,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purchase Tools - MCP tools for buying Pica credits
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class PurchasesTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private purchaseCredits;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=purchases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchases.d.ts","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,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;YA4C3D,eAAe;CAkB9B"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Purchase Tools - MCP tools for buying Pica credits
|
|
3
|
+
*/
|
|
4
|
+
import { formatSuccess } from "../utils/formatting.js";
|
|
5
|
+
export class PurchasesTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
getTools() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
definition: {
|
|
14
|
+
name: "pica_credits_purchase",
|
|
15
|
+
description: "Get a checkout link to purchase Pica credits. Returns a Stripe checkout URL the user can open to buy credits. " +
|
|
16
|
+
"Packages: pica_10 (10 credits), pica_25 (25 credits, best value), pica_50 (50 credits), pica_100 (100 credits). " +
|
|
17
|
+
"Currencies: GBP, USD, EUR, CAD, AUD, ZAR, NGN, KES, BRL, MXN. " +
|
|
18
|
+
"→ then: pica_credits_balance (verify purchase landed)",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
package_id: {
|
|
23
|
+
type: "string",
|
|
24
|
+
enum: ["pica_10", "pica_25", "pica_50", "pica_100"],
|
|
25
|
+
description: "Credit package. pica_25 is most popular.",
|
|
26
|
+
},
|
|
27
|
+
currency: {
|
|
28
|
+
type: "string",
|
|
29
|
+
enum: [
|
|
30
|
+
"GBP",
|
|
31
|
+
"USD",
|
|
32
|
+
"EUR",
|
|
33
|
+
"CAD",
|
|
34
|
+
"AUD",
|
|
35
|
+
"ZAR",
|
|
36
|
+
"NGN",
|
|
37
|
+
"KES",
|
|
38
|
+
"BRL",
|
|
39
|
+
"MXN",
|
|
40
|
+
],
|
|
41
|
+
description: "Payment currency (default: GBP). Emerging markets use PPP pricing.",
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
required: ["package_id"],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
executor: this.purchaseCredits.bind(this),
|
|
48
|
+
},
|
|
49
|
+
];
|
|
50
|
+
}
|
|
51
|
+
async purchaseCredits(args) {
|
|
52
|
+
const result = await this.pica.creditsBalance.purchase({
|
|
53
|
+
package_id: args.package_id,
|
|
54
|
+
currency: args.currency || "GBP",
|
|
55
|
+
});
|
|
56
|
+
const data = result.data || result;
|
|
57
|
+
const safeData = {
|
|
58
|
+
checkout_url: data.checkout_url,
|
|
59
|
+
package_id: args.package_id,
|
|
60
|
+
currency: args.currency || "GBP",
|
|
61
|
+
};
|
|
62
|
+
return formatSuccess(`Checkout link ready. Share this URL with the user to complete the purchase:\n${safeData.checkout_url}`, safeData);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=purchases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purchases.js","sourceRoot":"","sources":["../../src/tools/purchases.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,MAAM,OAAO,cAAc;IACjB,IAAI,CAAa;IAEzB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,QAAQ;QACN,OAAO;YACL;gBACE,UAAU,EAAE;oBACV,IAAI,EAAE,uBAAuB;oBAC7B,WAAW,EACT,gHAAgH;wBAChH,kHAAkH;wBAClH,gEAAgE;wBAChE,uDAAuD;oBACzD,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,UAAU,EAAE;gCACV,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;gCACnD,WAAW,EAAE,0CAA0C;6BACxD;4BACD,QAAQ,EAAE;gCACR,IAAI,EAAE,QAAQ;gCACd,IAAI,EAAE;oCACJ,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;oCACL,KAAK;iCACN;gCACD,WAAW,EACT,oEAAoE;6BACvE;yBACF;wBACD,QAAQ,EAAE,CAAC,YAAY,CAAC;qBACzB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,IAAyB;QACrD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;YACrD,UAAU,EAAE,IAAI,CAAC,UAAoB;YACrC,QAAQ,EAAG,IAAI,CAAC,QAAmB,IAAI,KAAK;SAC7C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;SACjC,CAAC;QAEF,OAAO,aAAa,CAClB,gFAAgF,QAAQ,CAAC,YAAY,EAAE,EACvG,QAAQ,CACT,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recordings Tools - MCP tools for managing recordings
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class RecordingsTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get all recordings tools
|
|
11
|
+
*/
|
|
12
|
+
getTools(): Array<{
|
|
13
|
+
definition: ToolDefinition;
|
|
14
|
+
executor: ToolExecutor;
|
|
15
|
+
}>;
|
|
16
|
+
/**
|
|
17
|
+
* List recordings
|
|
18
|
+
*/
|
|
19
|
+
private listRecordings;
|
|
20
|
+
/**
|
|
21
|
+
* Get recording by ID
|
|
22
|
+
*/
|
|
23
|
+
private getRecording;
|
|
24
|
+
/**
|
|
25
|
+
* Create recording
|
|
26
|
+
*/
|
|
27
|
+
private createRecording;
|
|
28
|
+
/**
|
|
29
|
+
* Update recording
|
|
30
|
+
*/
|
|
31
|
+
private updateRecording;
|
|
32
|
+
/**
|
|
33
|
+
* Delete recording
|
|
34
|
+
*/
|
|
35
|
+
private deleteRecording;
|
|
36
|
+
/**
|
|
37
|
+
* Get recordings by work
|
|
38
|
+
*/
|
|
39
|
+
private getRecordingsByWork;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=recordings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordings.d.ts","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,qBAAa,eAAe;IAC1B,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IA2OzE;;OAEG;YACW,cAAc;IAU5B;;OAEG;YACW,YAAY;IAY1B;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,eAAe;IAQ7B;;OAEG;YACW,eAAe;IAO7B;;OAEG;YACW,mBAAmB;CASlC"}
|
|
@@ -0,0 +1,293 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recordings Tools - MCP tools for managing recordings
|
|
3
|
+
*/
|
|
4
|
+
import { formatAsText, formatSuccess, formatStructuredList, } from "../utils/formatting.js";
|
|
5
|
+
export class RecordingsTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get all recordings tools
|
|
12
|
+
*/
|
|
13
|
+
getTools() {
|
|
14
|
+
return [
|
|
15
|
+
{
|
|
16
|
+
definition: {
|
|
17
|
+
name: "pica_recordings_list",
|
|
18
|
+
description: "List recordings from PICA catalog",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
limit: {
|
|
23
|
+
type: "number",
|
|
24
|
+
description: "Maximum number of results to return (default: 50)",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
executor: this.listRecordings.bind(this),
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
definition: {
|
|
33
|
+
name: "pica_recordings_get",
|
|
34
|
+
description: "Get details of a specific recording by ID",
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: {
|
|
38
|
+
id: {
|
|
39
|
+
type: "string",
|
|
40
|
+
description: "Recording ID",
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
required: ["id"],
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
executor: this.getRecording.bind(this),
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
definition: {
|
|
50
|
+
name: "pica_recordings_create",
|
|
51
|
+
description: "Create a new recording. Any field from the Recording schema can be passed — " +
|
|
52
|
+
"the most commonly used fields are listed below. Additional fields " +
|
|
53
|
+
"(e.g. mlc_recording_id, mlc_song_code, global_recording_id, global_release_id) " +
|
|
54
|
+
"are also accepted. " +
|
|
55
|
+
"→ then: pica_audio_presigned_upload (upload audio), pica_audio_analyze (extract features)",
|
|
56
|
+
inputSchema: {
|
|
57
|
+
type: "object",
|
|
58
|
+
properties: {
|
|
59
|
+
title: {
|
|
60
|
+
type: "string",
|
|
61
|
+
description: "Recording title (required). Maps to recording_title in DB.",
|
|
62
|
+
},
|
|
63
|
+
work_id: {
|
|
64
|
+
type: "string",
|
|
65
|
+
description: "ID of the work this recording is of",
|
|
66
|
+
},
|
|
67
|
+
isrc: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "International Standard Recording Code",
|
|
70
|
+
},
|
|
71
|
+
isrc_source: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "Where the ISRC came from (e.g. 'spotify', 'mlc', 'manual', 'ppl')",
|
|
74
|
+
},
|
|
75
|
+
duration_seconds: {
|
|
76
|
+
type: "number",
|
|
77
|
+
description: "Duration in seconds",
|
|
78
|
+
},
|
|
79
|
+
artist_name: {
|
|
80
|
+
type: "string",
|
|
81
|
+
description: "Artist name for this recording",
|
|
82
|
+
},
|
|
83
|
+
version_type: {
|
|
84
|
+
type: "string",
|
|
85
|
+
description: "Recording version type (e.g. 'original', 'remix', 'live', 'acoustic', 'demo', 'instrumental')",
|
|
86
|
+
},
|
|
87
|
+
labels: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "Record label(s), comma-separated if multiple",
|
|
90
|
+
},
|
|
91
|
+
ownership_percentage: {
|
|
92
|
+
type: "number",
|
|
93
|
+
description: "Ownership percentage (0-100)",
|
|
94
|
+
},
|
|
95
|
+
ppl_registered: {
|
|
96
|
+
type: "boolean",
|
|
97
|
+
description: "Whether registered with PPL",
|
|
98
|
+
},
|
|
99
|
+
ppl_recording_id: {
|
|
100
|
+
type: "string",
|
|
101
|
+
description: "PPL recording ID",
|
|
102
|
+
},
|
|
103
|
+
ai_disclosure: {
|
|
104
|
+
type: "object",
|
|
105
|
+
description: "AI disclosure object with composition, performance, production, mastering fields",
|
|
106
|
+
},
|
|
107
|
+
provenance_attestation: {
|
|
108
|
+
type: "object",
|
|
109
|
+
description: "Human creation proof with witness details",
|
|
110
|
+
},
|
|
111
|
+
training_rights: {
|
|
112
|
+
type: "object",
|
|
113
|
+
description: "B2B ML licensing compliance object",
|
|
114
|
+
},
|
|
115
|
+
musicbrainz_recording_id: {
|
|
116
|
+
type: "string",
|
|
117
|
+
description: "MusicBrainz recording ID",
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
required: ["title"],
|
|
121
|
+
additionalProperties: true,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
executor: this.createRecording.bind(this),
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
definition: {
|
|
128
|
+
name: "pica_recordings_update",
|
|
129
|
+
description: "Update an existing recording. Any field from the Recording schema can be passed — " +
|
|
130
|
+
"the most commonly used fields are listed below. Additional fields are also accepted.",
|
|
131
|
+
inputSchema: {
|
|
132
|
+
type: "object",
|
|
133
|
+
properties: {
|
|
134
|
+
id: {
|
|
135
|
+
type: "string",
|
|
136
|
+
description: "Recording ID (required)",
|
|
137
|
+
},
|
|
138
|
+
title: {
|
|
139
|
+
type: "string",
|
|
140
|
+
description: "Recording title. Maps to recording_title in DB.",
|
|
141
|
+
},
|
|
142
|
+
isrc: {
|
|
143
|
+
type: "string",
|
|
144
|
+
description: "International Standard Recording Code",
|
|
145
|
+
},
|
|
146
|
+
isrc_source: {
|
|
147
|
+
type: "string",
|
|
148
|
+
description: "Where the ISRC came from (e.g. 'spotify', 'mlc', 'manual', 'ppl')",
|
|
149
|
+
},
|
|
150
|
+
duration_seconds: {
|
|
151
|
+
type: "number",
|
|
152
|
+
description: "Duration in seconds",
|
|
153
|
+
},
|
|
154
|
+
artist_name: {
|
|
155
|
+
type: "string",
|
|
156
|
+
description: "Artist name for this recording",
|
|
157
|
+
},
|
|
158
|
+
version_type: {
|
|
159
|
+
type: "string",
|
|
160
|
+
description: "Recording version type (e.g. 'original', 'remix', 'live', 'acoustic', 'demo', 'instrumental')",
|
|
161
|
+
},
|
|
162
|
+
labels: {
|
|
163
|
+
type: "string",
|
|
164
|
+
description: "Record label(s), comma-separated if multiple",
|
|
165
|
+
},
|
|
166
|
+
ownership_percentage: {
|
|
167
|
+
type: "number",
|
|
168
|
+
description: "Ownership percentage (0-100)",
|
|
169
|
+
},
|
|
170
|
+
ppl_registered: {
|
|
171
|
+
type: "boolean",
|
|
172
|
+
description: "Whether registered with PPL",
|
|
173
|
+
},
|
|
174
|
+
ppl_recording_id: {
|
|
175
|
+
type: "string",
|
|
176
|
+
description: "PPL recording ID",
|
|
177
|
+
},
|
|
178
|
+
ai_disclosure: {
|
|
179
|
+
type: "object",
|
|
180
|
+
description: "AI disclosure object with composition, performance, production, mastering fields",
|
|
181
|
+
},
|
|
182
|
+
provenance_attestation: {
|
|
183
|
+
type: "object",
|
|
184
|
+
description: "Human creation proof with witness details",
|
|
185
|
+
},
|
|
186
|
+
training_rights: {
|
|
187
|
+
type: "object",
|
|
188
|
+
description: "B2B ML licensing compliance object",
|
|
189
|
+
},
|
|
190
|
+
musicbrainz_recording_id: {
|
|
191
|
+
type: "string",
|
|
192
|
+
description: "MusicBrainz recording ID",
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
required: ["id"],
|
|
196
|
+
additionalProperties: true,
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
executor: this.updateRecording.bind(this),
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
definition: {
|
|
203
|
+
name: "pica_recordings_delete",
|
|
204
|
+
description: "Delete a recording",
|
|
205
|
+
inputSchema: {
|
|
206
|
+
type: "object",
|
|
207
|
+
properties: {
|
|
208
|
+
id: {
|
|
209
|
+
type: "string",
|
|
210
|
+
description: "Recording ID",
|
|
211
|
+
},
|
|
212
|
+
},
|
|
213
|
+
required: ["id"],
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
executor: this.deleteRecording.bind(this),
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
definition: {
|
|
220
|
+
name: "pica_recordings_by_work",
|
|
221
|
+
description: "Get all recordings of a specific work",
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: "object",
|
|
224
|
+
properties: {
|
|
225
|
+
work_id: {
|
|
226
|
+
type: "string",
|
|
227
|
+
description: "Work ID",
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
required: ["work_id"],
|
|
231
|
+
},
|
|
232
|
+
},
|
|
233
|
+
executor: this.getRecordingsByWork.bind(this),
|
|
234
|
+
},
|
|
235
|
+
];
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* List recordings
|
|
239
|
+
*/
|
|
240
|
+
async listRecordings(args) {
|
|
241
|
+
const limit = args.limit || 50;
|
|
242
|
+
const recordings = await this.pica.recordings.list({ limit });
|
|
243
|
+
return formatStructuredList(recordings, "recording", {
|
|
244
|
+
total: recordings.length,
|
|
245
|
+
limit,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Get recording by ID
|
|
250
|
+
*/
|
|
251
|
+
async getRecording(args) {
|
|
252
|
+
const recording = await this.pica.recordings.get(args.id);
|
|
253
|
+
// Enrich with ISRC prefix intelligence if ISRC is present
|
|
254
|
+
let prefix_intel = null;
|
|
255
|
+
if (recording.isrc) {
|
|
256
|
+
prefix_intel = await this.pica.recordings.prefixLookup(recording.isrc);
|
|
257
|
+
}
|
|
258
|
+
return formatAsText({ ...recording, prefix_intel });
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Create recording
|
|
262
|
+
*/
|
|
263
|
+
async createRecording(args) {
|
|
264
|
+
const recording = await this.pica.recordings.create(args);
|
|
265
|
+
return formatSuccess("Recording created successfully", recording);
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Update recording
|
|
269
|
+
*/
|
|
270
|
+
async updateRecording(args) {
|
|
271
|
+
const { id, ...updates } = args;
|
|
272
|
+
const recording = await this.pica.recordings.update(id, updates);
|
|
273
|
+
return formatSuccess("Recording updated successfully", recording);
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Delete recording
|
|
277
|
+
*/
|
|
278
|
+
async deleteRecording(args) {
|
|
279
|
+
await this.pica.recordings.delete(args.id);
|
|
280
|
+
return formatSuccess(`Recording ${args.id} deleted successfully`);
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Get recordings by work
|
|
284
|
+
*/
|
|
285
|
+
async getRecordingsByWork(args) {
|
|
286
|
+
const recordings = await this.pica.recordings.getByWork(args.work_id);
|
|
287
|
+
return formatStructuredList(recordings, "recording", {
|
|
288
|
+
work_id: args.work_id,
|
|
289
|
+
total: recordings.length,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
//# sourceMappingURL=recordings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recordings.js","sourceRoot":"","sources":["../../src/tools/recordings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration Tools - MCP tools for checking registration status and coverage
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class RegistrationTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private registrationCoverage;
|
|
14
|
+
private workRegistrationStatus;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration.d.ts","sourceRoot":"","sources":["../../src/tools/registration.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,iBAAiB;IAC5B,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;YAoC3D,oBAAoB;YAOpB,sBAAsB;CAQrC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registration Tools - MCP tools for checking registration status and coverage
|
|
3
|
+
*/
|
|
4
|
+
import { formatAsText } from "../utils/formatting.js";
|
|
5
|
+
export class RegistrationTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
getTools() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
definition: {
|
|
14
|
+
name: "pica_registration_coverage",
|
|
15
|
+
description: "Get registration coverage overview — shows what percentage of works are registered with PROs, MLC, etc. " +
|
|
16
|
+
"→ then: pica_work_registration_status (check a specific work), pica_export_song_registration (export for submission)",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
executor: this.registrationCoverage.bind(this),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
definition: {
|
|
26
|
+
name: "pica_work_registration_status",
|
|
27
|
+
description: "Get the registration cascade status for a specific work — which registrations are complete, pending, or missing",
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: "object",
|
|
30
|
+
properties: {
|
|
31
|
+
work_id: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "The work ID to check registration status for",
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ["work_id"],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
executor: this.workRegistrationStatus.bind(this),
|
|
40
|
+
},
|
|
41
|
+
];
|
|
42
|
+
}
|
|
43
|
+
async registrationCoverage(_args) {
|
|
44
|
+
const result = await this.pica.registration.getCoverage();
|
|
45
|
+
return formatAsText(result);
|
|
46
|
+
}
|
|
47
|
+
async workRegistrationStatus(args) {
|
|
48
|
+
const result = await this.pica.registration.getWorkCascadeStatus(args.work_id);
|
|
49
|
+
return formatAsText(result);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=registration.js.map
|