@withpica/mcp-server 2.7.0 → 2.8.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/dist/__mocks__/mppx-mcp-sdk-server.d.ts +6 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.d.ts.map +1 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.js +6 -0
- package/dist/__mocks__/mppx-mcp-sdk-server.js.map +1 -0
- package/dist/__mocks__/mppx-server.d.ts +12 -0
- package/dist/__mocks__/mppx-server.d.ts.map +1 -0
- package/dist/__mocks__/mppx-server.js +12 -0
- package/dist/__mocks__/mppx-server.js.map +1 -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/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 +4 -25
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +36 -12
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts +64 -64
- package/dist/prompts/index.js +24 -24
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/index.d.ts +55 -53
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +133 -54
- package/dist/resources/index.js.map +1 -1
- 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/server-instructions.d.ts +9 -0
- package/dist/server-instructions.d.ts.map +1 -0
- package/dist/server-instructions.js +34 -0
- package/dist/server-instructions.js.map +1 -0
- package/dist/server.d.ts +49 -32
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +103 -14
- package/dist/server.js.map +1 -1
- 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 +387 -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 +363 -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 +124 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/app-tools.d.ts +21 -0
- package/dist/tools/app-tools.d.ts.map +1 -0
- package/dist/tools/app-tools.js +248 -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 +631 -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 +384 -0
- package/dist/tools/audio-files.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 +210 -0
- package/dist/tools/auth.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 +85 -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 +67 -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 +311 -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 +78 -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 +312 -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 +274 -0
- package/dist/tools/custody.js.map +1 -0
- package/dist/tools/dashboard.d.ts +19 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +146 -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 +106 -0
- package/dist/tools/directory.js.map +1 -0
- package/dist/tools/discovery.d.ts +28 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +560 -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 +61 -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 +36 -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 +87 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +20 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +154 -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 +175 -0
- package/dist/tools/exports.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 +203 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +30 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +455 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +83 -37
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +448 -84
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/integrations.d.ts +15 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +100 -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 +431 -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 +116 -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 +1106 -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 +291 -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 +108 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +20 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +266 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/people.d.ts +39 -47
- package/dist/tools/people.d.ts.map +1 -1
- package/dist/tools/people.js +148 -109
- package/dist/tools/people.js.map +1 -1
- package/dist/tools/projects.d.ts +19 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +140 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/publishers.d.ts +16 -0
- package/dist/tools/publishers.d.ts.map +1 -0
- package/dist/tools/publishers.js +69 -0
- package/dist/tools/publishers.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 +63 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recordings.d.ts +9 -9
- package/dist/tools/recordings.d.ts.map +1 -1
- package/dist/tools/recordings.js +136 -48
- package/dist/tools/recordings.js.map +1 -1
- package/dist/tools/recovery-hints.d.ts +14 -0
- package/dist/tools/recovery-hints.d.ts.map +1 -0
- package/dist/tools/recovery-hints.js +277 -0
- package/dist/tools/recovery-hints.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 +128 -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 +257 -0
- package/dist/tools/royalties.js.map +1 -0
- package/dist/tools/search.d.ts +21 -21
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +3 -3
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/send.d.ts +17 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +185 -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 +115 -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 +96 -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 +121 -0
- package/dist/tools/share-links.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 +307 -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 +134 -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 +141 -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 +156 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +39 -47
- package/dist/tools/works.d.ts.map +1 -1
- package/dist/tools/works.js +216 -116
- package/dist/tools/works.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Tools - MCP tools for document AI analysis
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class DocumentTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private analyseDocument;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=documents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,aAAa;IACxB,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;YAyB3D,eAAe;CAM9B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatSuccess } from "@withpica/mcp-utils";
|
|
3
|
+
export class DocumentTools {
|
|
4
|
+
pica;
|
|
5
|
+
constructor(pica) {
|
|
6
|
+
this.pica = pica;
|
|
7
|
+
}
|
|
8
|
+
getTools() {
|
|
9
|
+
return [
|
|
10
|
+
{
|
|
11
|
+
definition: {
|
|
12
|
+
name: "pica_documents_analyse",
|
|
13
|
+
description: "Trigger AI analysis on an uploaded document. Extracts metadata such as document type, " +
|
|
14
|
+
"agreement terms, parties, dates, and key fields. Uses AI when available (credit-gated), " +
|
|
15
|
+
"falls back to rule-based extraction otherwise. Upload documents first with pica_upload_file + pica_upload_complete.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
id: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Document ID to analyse",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["id"],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
executor: this.analyseDocument.bind(this),
|
|
28
|
+
},
|
|
29
|
+
];
|
|
30
|
+
}
|
|
31
|
+
async analyseDocument(args) {
|
|
32
|
+
const result = await this.pica.documents.analyse(args.id);
|
|
33
|
+
return formatSuccess(`Document ${args.id} analysed successfully.`, result);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=documents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../src/tools/documents.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAQ7D,OAAO,EAAE,aAAa,EAAgB,MAAM,qBAAqB,CAAC;AAElE,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,wBAAwB;oBAC9B,WAAW,EACT,wFAAwF;wBACxF,0FAA0F;wBAC1F,qHAAqH;oBACvH,WAAW,EAAE;wBACX,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,EAAE,EAAE;gCACF,IAAI,EAAE,QAAQ;gCACd,WAAW,EAAE,wBAAwB;6BACtC;yBACF;wBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;qBACjB;iBACF;gBACD,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC1C;SACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,IAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,aAAa,CAAC,YAAY,IAAI,CAAC,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Duplicate Detection & Merge Tools - MCP tools for finding and merging duplicates
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class DuplicatesTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private findDuplicates;
|
|
14
|
+
private mergeDuplicates;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=duplicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,qBAAa,eAAe;IAC1B,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;YAuD3D,cAAc;YAKd,eAAe;CAsC9B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatAsText, formatSuccess, formatValidationError, } from "@withpica/mcp-utils";
|
|
3
|
+
export class DuplicatesTools {
|
|
4
|
+
pica;
|
|
5
|
+
constructor(pica) {
|
|
6
|
+
this.pica = pica;
|
|
7
|
+
}
|
|
8
|
+
getTools() {
|
|
9
|
+
return [
|
|
10
|
+
{
|
|
11
|
+
definition: {
|
|
12
|
+
name: "pica_find_duplicates",
|
|
13
|
+
description: "Detect duplicate works or people in the catalog by exact title/name match. Returns groups of duplicates with suggested winners. " +
|
|
14
|
+
"→ then: pica_merge_duplicates (merge confirmed duplicates)",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
entity_type: {
|
|
19
|
+
type: "string",
|
|
20
|
+
enum: ["works", "people"],
|
|
21
|
+
description: "Type of entity to check for duplicates",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
required: ["entity_type"],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
executor: this.findDuplicates.bind(this),
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
definition: {
|
|
31
|
+
name: "pica_merge_duplicates",
|
|
32
|
+
description: "Merge duplicate works or people into a single winner. Moves all credits, recordings, agreements, and metadata to the winner. Requires admin scope.",
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
entity_type: {
|
|
37
|
+
type: "string",
|
|
38
|
+
enum: ["work", "person"],
|
|
39
|
+
description: "Type of entity to merge",
|
|
40
|
+
},
|
|
41
|
+
winner_id: {
|
|
42
|
+
type: "string",
|
|
43
|
+
description: "ID of the entity to keep (all data will be merged into this one)",
|
|
44
|
+
},
|
|
45
|
+
loser_ids: {
|
|
46
|
+
type: "array",
|
|
47
|
+
items: { type: "string" },
|
|
48
|
+
description: "IDs of duplicate entities to merge into the winner and then delete",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
required: ["entity_type", "winner_id", "loser_ids"],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
executor: this.mergeDuplicates.bind(this),
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
}
|
|
58
|
+
async findDuplicates(args) {
|
|
59
|
+
const result = await this.pica.duplicates.findDuplicates(args.entity_type);
|
|
60
|
+
return formatAsText(result);
|
|
61
|
+
}
|
|
62
|
+
async mergeDuplicates(args) {
|
|
63
|
+
if (!args.loser_ids?.length) {
|
|
64
|
+
return formatValidationError({ loser_ids: "must be a non-empty array" });
|
|
65
|
+
}
|
|
66
|
+
const loserIds = args.loser_ids;
|
|
67
|
+
if (loserIds && loserIds.length > 25) {
|
|
68
|
+
return {
|
|
69
|
+
content: [
|
|
70
|
+
{
|
|
71
|
+
type: "text",
|
|
72
|
+
text: JSON.stringify({
|
|
73
|
+
error: "VALIDATION_ERROR",
|
|
74
|
+
message: `maximum 25 loser IDs per merge — received ${loserIds.length}`,
|
|
75
|
+
retry_safe: false,
|
|
76
|
+
suggestion: "split into multiple merge operations with 25 or fewer IDs each",
|
|
77
|
+
}, null, 2),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
isError: true,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
const result = await this.pica.duplicates.merge(args.entity_type, args.winner_id, args.loser_ids);
|
|
84
|
+
return formatSuccess(`Merged ${args.loser_ids.length} duplicate ${args.entity_type}(s) into ${args.winner_id}`, result);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=duplicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../src/tools/duplicates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enrichment Tools - MCP tools for triggering and checking enrichment
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class EnrichmentTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private enrichmentCandidates;
|
|
14
|
+
private enrichWorkMlc;
|
|
15
|
+
private enrichWorkMusicBrainz;
|
|
16
|
+
private enrichWorkDiscogs;
|
|
17
|
+
private enrichWorkSpotify;
|
|
18
|
+
private enrichWorkYouTube;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=enrichment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichment.d.ts","sourceRoot":"","sources":["../../src/tools/enrichment.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAKtE,qBAAa,eAAe;IAC1B,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;YAgJ3D,oBAAoB;YAOpB,aAAa;YAKb,qBAAqB;YASrB,iBAAiB;YAOjB,iBAAiB;YAuBjB,iBAAiB;CAMhC"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatAsText, formatSuccess } from "@withpica/mcp-utils";
|
|
3
|
+
import { withCreditGate, withBillingGate } from "@withpica/mcp-utils";
|
|
4
|
+
import { formatEnrichmentResult } from "@withpica/mcp-utils";
|
|
5
|
+
export class EnrichmentTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
getTools() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
definition: {
|
|
14
|
+
name: "pica_enrichment_candidates",
|
|
15
|
+
description: "Find works and people that are candidates for enrichment (missing external identifiers or metadata). " +
|
|
16
|
+
"→ then: pica_enrich_work_spotify (enrich from Spotify), pica_enrich_work_mlc (enrich from MLC)",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {},
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
executor: this.enrichmentCandidates.bind(this),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
definition: {
|
|
26
|
+
name: "pica_enrich_work_mlc",
|
|
27
|
+
description: "Check MLC (Mechanical Licensing Collective) for publishing details on a work — writers, publishers, and splits. " +
|
|
28
|
+
"Use this when you want to find out if a work has publishing registrations. Costs 1 pica credit.",
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: "object",
|
|
31
|
+
properties: {
|
|
32
|
+
work_id: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "The work ID to check MLC for",
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
required: ["work_id"],
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
executor: withBillingGate(this.pica, "MLC lookup", withCreditGate(this.pica, "external_mlc_lookup", "MLC lookup", this.enrichWorkMlc.bind(this))),
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
definition: {
|
|
44
|
+
name: "pica_enrich_work_musicbrainz",
|
|
45
|
+
description: "Look up MusicBrainz for release data, artist info, and cross-references for a work. " +
|
|
46
|
+
"Returns release data, artist info, and cross-references.",
|
|
47
|
+
inputSchema: {
|
|
48
|
+
type: "object",
|
|
49
|
+
properties: {
|
|
50
|
+
work_id: {
|
|
51
|
+
type: "string",
|
|
52
|
+
description: "The work ID to look up on MusicBrainz",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
required: ["work_id"],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
executor: withBillingGate(this.pica, "MusicBrainz lookup", this.enrichWorkMusicBrainz.bind(this)),
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
definition: {
|
|
62
|
+
name: "pica_enrich_work_discogs",
|
|
63
|
+
description: "Search Discogs for release data, label, format, and catalogue numbers for a work. " +
|
|
64
|
+
"Returns a preview of matches.",
|
|
65
|
+
inputSchema: {
|
|
66
|
+
type: "object",
|
|
67
|
+
properties: {
|
|
68
|
+
work_id: {
|
|
69
|
+
type: "string",
|
|
70
|
+
description: "The work ID to search Discogs for",
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
required: ["work_id"],
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
executor: withBillingGate(this.pica, "Discogs lookup", this.enrichWorkDiscogs.bind(this)),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
definition: {
|
|
80
|
+
name: "pica_enrich_work_spotify",
|
|
81
|
+
description: "Enrich a work from Spotify — pulls track metadata, popularity, and streaming data. " +
|
|
82
|
+
"Optionally pass spotify_url to link the track URI before enriching. " +
|
|
83
|
+
"→ then: pica_works_inspect (check what changed), pica_credits_update (add credits)",
|
|
84
|
+
inputSchema: {
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: {
|
|
87
|
+
work_id: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "The work ID to enrich from Spotify",
|
|
90
|
+
},
|
|
91
|
+
spotify_url: {
|
|
92
|
+
type: "string",
|
|
93
|
+
description: "Optional Spotify URL or URI to link before enriching",
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
required: ["work_id"],
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
executor: withBillingGate(this.pica, "Spotify enrichment", this.enrichWorkSpotify.bind(this)),
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
definition: {
|
|
103
|
+
name: "pica_enrich_work_youtube",
|
|
104
|
+
description: "Enrich a work from YouTube — pulls view count, like count, channel info, and video duration. " +
|
|
105
|
+
"The work must already have a youtube_video_id linked.",
|
|
106
|
+
inputSchema: {
|
|
107
|
+
type: "object",
|
|
108
|
+
properties: {
|
|
109
|
+
work_id: {
|
|
110
|
+
type: "string",
|
|
111
|
+
description: "The work ID to enrich from YouTube",
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
required: ["work_id"],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
executor: withBillingGate(this.pica, "YouTube enrichment", this.enrichWorkYouTube.bind(this)),
|
|
118
|
+
},
|
|
119
|
+
];
|
|
120
|
+
}
|
|
121
|
+
async enrichmentCandidates(_args) {
|
|
122
|
+
const result = await this.pica.enrichment.getCandidates();
|
|
123
|
+
return formatAsText(result);
|
|
124
|
+
}
|
|
125
|
+
async enrichWorkMlc(args) {
|
|
126
|
+
const result = await this.pica.enrichment.enrichWorkMlc(args.work_id);
|
|
127
|
+
return formatEnrichmentResult("work", args.work_id, "MLC", result);
|
|
128
|
+
}
|
|
129
|
+
async enrichWorkMusicBrainz(args) {
|
|
130
|
+
const result = await this.pica.enrichment.enrichWorkMusicBrainz(args.work_id);
|
|
131
|
+
return formatEnrichmentResult("work", args.work_id, "MusicBrainz", result);
|
|
132
|
+
}
|
|
133
|
+
async enrichWorkDiscogs(args) {
|
|
134
|
+
const result = await this.pica.enrichment.enrichWorkDiscogs(args.work_id);
|
|
135
|
+
return formatEnrichmentResult("work", args.work_id, "Discogs", result);
|
|
136
|
+
}
|
|
137
|
+
async enrichWorkSpotify(args) {
|
|
138
|
+
const workId = args.work_id;
|
|
139
|
+
const spotifyUrl = args.spotify_url;
|
|
140
|
+
// If spotify_url provided, link it to the work first, then enrich
|
|
141
|
+
if (spotifyUrl) {
|
|
142
|
+
const result = await this.pica.enrichment.linkAndEnrichSpotify(workId, spotifyUrl);
|
|
143
|
+
return formatSuccess(`Linked Spotify track and enriched work ${workId}`, result);
|
|
144
|
+
}
|
|
145
|
+
// work_id only — enrich from already-linked Spotify data
|
|
146
|
+
const result = await this.pica.enrichment.enrichWorkSpotify(workId);
|
|
147
|
+
return formatEnrichmentResult("work", workId, "Spotify", result);
|
|
148
|
+
}
|
|
149
|
+
async enrichWorkYouTube(args) {
|
|
150
|
+
const result = await this.pica.enrichment.enrichWorkYouTube(args.work_id);
|
|
151
|
+
return formatEnrichmentResult("work", args.work_id, "YouTube", result);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=enrichment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enrichment.js","sourceRoot":"","sources":["../../src/tools/enrichment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Export Tools - MCP tools for exporting catalog data
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class ExportTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private exportCatalogCsv;
|
|
14
|
+
private exportSongRegistration;
|
|
15
|
+
private exportIndustryReady;
|
|
16
|
+
private exportCatalogAssetReport;
|
|
17
|
+
private exportAiConsent;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=exports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../src/tools/exports.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAItE,qBAAa,WAAW;IACtB,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;YAmI3D,gBAAgB;YAShB,sBAAsB;YAuBtB,mBAAmB;YAOnB,wBAAwB;YAgDxB,eAAe;CAS9B"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026 Withpica Ltd. All rights reserved.
|
|
2
|
+
import { formatAsText, formatSuccess } from "@withpica/mcp-utils";
|
|
3
|
+
import { withCreditGate, withBillingGate } from "@withpica/mcp-utils";
|
|
4
|
+
export class ExportTools {
|
|
5
|
+
pica;
|
|
6
|
+
constructor(pica) {
|
|
7
|
+
this.pica = pica;
|
|
8
|
+
}
|
|
9
|
+
getTools() {
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
definition: {
|
|
13
|
+
name: "pica_export_catalog_csv",
|
|
14
|
+
description: "Export the full works catalog as CSV data",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
format: {
|
|
19
|
+
type: "string",
|
|
20
|
+
enum: ["csv", "json"],
|
|
21
|
+
description: "Export format (default: csv)",
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
executor: this.exportCatalogCsv.bind(this),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
definition: {
|
|
30
|
+
name: "pica_export_song_registration",
|
|
31
|
+
description: "Export catalog in song registration format (CWR-compatible) for PRO/CMO registration. Costs 1 pica credit.",
|
|
32
|
+
inputSchema: {
|
|
33
|
+
type: "object",
|
|
34
|
+
properties: {},
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
executor: withBillingGate(this.pica, "song registration export", withCreditGate(this.pica, "export_song_registration", "song registration export", this.exportSongRegistration.bind(this))),
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
definition: {
|
|
41
|
+
name: "pica_export_industry_ready",
|
|
42
|
+
description: "Export industry-ready metadata package — formatted for distribution to publishers, labels, and sync agents. Costs 1 pica credit.",
|
|
43
|
+
inputSchema: {
|
|
44
|
+
type: "object",
|
|
45
|
+
properties: {},
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
executor: withBillingGate(this.pica, "industry-ready export", withCreditGate(this.pica, "export_industry_csv", "industry-ready export", this.exportIndustryReady.bind(this))),
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
definition: {
|
|
52
|
+
name: "pica_export_catalog_asset_report",
|
|
53
|
+
description: "Generate a Catalog Asset Report (CAR) — a unified ZIP bundle with cover PDF, evidence folders, and integrity manifest. Maps creative portfolio data to property-lending equivalents for financial institutions, insurers, PROs, and distributors. Sections include: ownership (title deed equivalent), valuation (surveyor's report), physical assets (contents schedule), agreements (mortgage deed), catalog intelligence (condition report), and summary with equivalence map. Costs 5 pica credits. Check pica_credits_balance first.",
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: "object",
|
|
56
|
+
properties: {
|
|
57
|
+
sections: {
|
|
58
|
+
type: "object",
|
|
59
|
+
description: "Which sections to include in the export. Ownership is always included.",
|
|
60
|
+
properties: {
|
|
61
|
+
valuation: {
|
|
62
|
+
type: "boolean",
|
|
63
|
+
description: "Include earnings, audio intelligence, DSP presence, completeness scores",
|
|
64
|
+
},
|
|
65
|
+
assets: {
|
|
66
|
+
type: "boolean",
|
|
67
|
+
description: "Include physical asset register with insurance and valuations",
|
|
68
|
+
},
|
|
69
|
+
agreements: {
|
|
70
|
+
type: "boolean",
|
|
71
|
+
description: "Include agreements structure and AI consent status",
|
|
72
|
+
},
|
|
73
|
+
intelligence: {
|
|
74
|
+
type: "boolean",
|
|
75
|
+
description: "Include gap analysis, carbon footprint, diligence readiness",
|
|
76
|
+
},
|
|
77
|
+
audio: {
|
|
78
|
+
type: "boolean",
|
|
79
|
+
description: "Include audio master files (large, opt-in)",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
executor: withBillingGate(this.pica, "catalog asset report", withCreditGate(this.pica, "export_catalog_asset_report", "catalog asset report", this.exportCatalogAssetReport.bind(this))),
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
definition: {
|
|
90
|
+
name: "pica_export_ai_consent",
|
|
91
|
+
description: "Export AI usage consent declarations for all works — " +
|
|
92
|
+
"shows which works are human-made, AI-assisted, or AI-generated, " +
|
|
93
|
+
"with contributor-level consent tracking for AI model training and licensing.",
|
|
94
|
+
inputSchema: {
|
|
95
|
+
type: "object",
|
|
96
|
+
properties: {},
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
executor: this.exportAiConsent.bind(this),
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
}
|
|
103
|
+
async exportCatalogCsv(args) {
|
|
104
|
+
const result = await this.pica.exports.catalogCsv({
|
|
105
|
+
format: args.format,
|
|
106
|
+
});
|
|
107
|
+
return formatAsText(result);
|
|
108
|
+
}
|
|
109
|
+
async exportSongRegistration(_args) {
|
|
110
|
+
const result = await this.pica.exports.songRegistration();
|
|
111
|
+
const data = result?.data ?? result;
|
|
112
|
+
// ADR-146: Surface export gate warnings
|
|
113
|
+
const parts = ["Song registration export generated"];
|
|
114
|
+
if (data?.exportReadiness?.blockers?.length > 0) {
|
|
115
|
+
parts.push(`\n--- export gate (${data.exportReadiness.mode} mode) ---`);
|
|
116
|
+
for (const b of data.exportReadiness.blockers) {
|
|
117
|
+
parts.push(`${b.type}: ${b.workTitle} — ${b.resolutionHint}`);
|
|
118
|
+
}
|
|
119
|
+
if (data.exportReadiness.mode === "advisory") {
|
|
120
|
+
parts.push("These issues will block export when enforcement mode is enabled.");
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return formatSuccess(parts.join("\n"), data);
|
|
124
|
+
}
|
|
125
|
+
async exportIndustryReady(_args) {
|
|
126
|
+
const result = await this.pica.exports.industryReady();
|
|
127
|
+
return formatSuccess("Industry-ready export generated", result);
|
|
128
|
+
}
|
|
129
|
+
async exportCatalogAssetReport(args) {
|
|
130
|
+
const sections = {
|
|
131
|
+
ownership: true,
|
|
132
|
+
valuation: args.sections?.valuation ?? true,
|
|
133
|
+
assets: args.sections?.assets ?? true,
|
|
134
|
+
agreements: args.sections?.agreements ?? true,
|
|
135
|
+
intelligence: args.sections?.intelligence ?? true,
|
|
136
|
+
audio: args.sections?.audio ?? false,
|
|
137
|
+
};
|
|
138
|
+
const result = await this.pica.exports.catalogAssetReport({
|
|
139
|
+
sections,
|
|
140
|
+
attestation: {
|
|
141
|
+
signer_name: "MCP Agent",
|
|
142
|
+
declaration_accepted: true,
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
const data = result?.data ?? result;
|
|
146
|
+
let summary = [
|
|
147
|
+
`Catalog Asset Report generated`,
|
|
148
|
+
`Stage: ${data.stage ?? "unknown"}`,
|
|
149
|
+
`PICA Score: ${data.pica_score ?? "N/A"}${data.pica_grade ? ` (${data.pica_grade})` : ""}`,
|
|
150
|
+
`Sections: ownership${sections.valuation ? ", valuation" : ""}${sections.assets ? ", assets" : ""}${sections.agreements ? ", agreements" : ""}${sections.intelligence ? ", intelligence" : ""}${sections.audio ? ", audio" : ""}`,
|
|
151
|
+
data.file_size_bytes
|
|
152
|
+
? `Size: ${(data.file_size_bytes / 1024).toFixed(1)} KB`
|
|
153
|
+
: null,
|
|
154
|
+
data.download_url ? `Download: ${data.download_url}` : null,
|
|
155
|
+
]
|
|
156
|
+
.filter(Boolean)
|
|
157
|
+
.join("\n");
|
|
158
|
+
// ADR-146: Surface export gate warnings
|
|
159
|
+
if (data?.exportReadiness?.blockers?.length > 0) {
|
|
160
|
+
summary += `\nExport gate (${data.exportReadiness.mode} mode): ${data.exportReadiness.blockers.length} blocker(s)`;
|
|
161
|
+
for (const b of data.exportReadiness.blockers.slice(0, 5)) {
|
|
162
|
+
summary += `\n ${b.type}: ${b.workTitle} — ${b.resolutionHint}`;
|
|
163
|
+
}
|
|
164
|
+
if (data.exportReadiness.blockers.length > 5) {
|
|
165
|
+
summary += `\n ... and ${data.exportReadiness.blockers.length - 5} more`;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return formatSuccess(summary, data);
|
|
169
|
+
}
|
|
170
|
+
async exportAiConsent(_args) {
|
|
171
|
+
const result = await this.pica.exports.aiConsent();
|
|
172
|
+
return formatSuccess("AI consent declarations exported — shows disclosure level and training rights per work", result);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exports.js","sourceRoot":"","sources":["../../src/tools/exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Import Documents Tools - MCP tools for canonical ingestion documents
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "@withpica/mcp-sdk";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class ImportDocumentTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
/**
|
|
10
|
+
* Get all import document tools
|
|
11
|
+
*/
|
|
12
|
+
getTools(): Array<{
|
|
13
|
+
definition: ToolDefinition;
|
|
14
|
+
executor: ToolExecutor;
|
|
15
|
+
}>;
|
|
16
|
+
private queryImportDocuments;
|
|
17
|
+
private inspectImportDocument;
|
|
18
|
+
private ingestStatement;
|
|
19
|
+
private computeDiff;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=import-documents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-documents.d.ts","sourceRoot":"","sources":["../../src/tools/import-documents.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,mBAAmB;IAC9B,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;YA0F3D,oBAAoB;YAOpB,qBAAqB;YA+DrB,eAAe;IAgB7B,OAAO,CAAC,WAAW;CAyDpB"}
|