@metalevel/snapix-mcp-server 0.1.1
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/LICENSE +674 -0
- package/README.md +161 -0
- package/dist/client.d.ts +30 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +203 -0
- package/dist/client.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +11 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +18 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +48 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/galleries.d.ts +4 -0
- package/dist/resources/galleries.d.ts.map +1 -0
- package/dist/resources/galleries.js +35 -0
- package/dist/resources/galleries.js.map +1 -0
- package/dist/resources/images.d.ts +4 -0
- package/dist/resources/images.d.ts.map +1 -0
- package/dist/resources/images.js +35 -0
- package/dist/resources/images.js.map +1 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +56 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/convert.d.ts +4 -0
- package/dist/tools/convert.d.ts.map +1 -0
- package/dist/tools/convert.js +28 -0
- package/dist/tools/convert.js.map +1 -0
- package/dist/tools/create-gallery.d.ts +4 -0
- package/dist/tools/create-gallery.d.ts.map +1 -0
- package/dist/tools/create-gallery.js +34 -0
- package/dist/tools/create-gallery.js.map +1 -0
- package/dist/tools/delete-gallery.d.ts +4 -0
- package/dist/tools/delete-gallery.d.ts.map +1 -0
- package/dist/tools/delete-gallery.js +26 -0
- package/dist/tools/delete-gallery.js.map +1 -0
- package/dist/tools/delete-image.d.ts +4 -0
- package/dist/tools/delete-image.d.ts.map +1 -0
- package/dist/tools/delete-image.js +22 -0
- package/dist/tools/delete-image.js.map +1 -0
- package/dist/tools/generate.d.ts +4 -0
- package/dist/tools/generate.d.ts.map +1 -0
- package/dist/tools/generate.js +61 -0
- package/dist/tools/generate.js.map +1 -0
- package/dist/tools/get-gallery.d.ts +4 -0
- package/dist/tools/get-gallery.d.ts.map +1 -0
- package/dist/tools/get-gallery.js +22 -0
- package/dist/tools/get-gallery.js.map +1 -0
- package/dist/tools/get-image.d.ts +4 -0
- package/dist/tools/get-image.d.ts.map +1 -0
- package/dist/tools/get-image.js +22 -0
- package/dist/tools/get-image.js.map +1 -0
- package/dist/tools/list-galleries.d.ts +4 -0
- package/dist/tools/list-galleries.d.ts.map +1 -0
- package/dist/tools/list-galleries.js +18 -0
- package/dist/tools/list-galleries.js.map +1 -0
- package/dist/tools/list-images.d.ts +4 -0
- package/dist/tools/list-images.d.ts.map +1 -0
- package/dist/tools/list-images.js +34 -0
- package/dist/tools/list-images.js.map +1 -0
- package/dist/tools/update-gallery.d.ts +4 -0
- package/dist/tools/update-gallery.d.ts.map +1 -0
- package/dist/tools/update-gallery.js +27 -0
- package/dist/tools/update-gallery.js.map +1 -0
- package/dist/tools/update-image.d.ts +4 -0
- package/dist/tools/update-image.d.ts.map +1 -0
- package/dist/tools/update-image.js +32 -0
- package/dist/tools/update-image.js.map +1 -0
- package/dist/tools/upload-image.d.ts +4 -0
- package/dist/tools/upload-image.d.ts.map +1 -0
- package/dist/tools/upload-image.js +68 -0
- package/dist/tools/upload-image.js.map +1 -0
- package/dist/types.d.ts +67 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type CreateServerOptions } from "./types.js";
|
|
3
|
+
export declare function createSnapixMcpServer({ apiKey, baseUrl, }: CreateServerOptions): McpServer;
|
|
4
|
+
/**
|
|
5
|
+
* Creates a stateless request handler for use in web frameworks (Next.js, Hono, etc.).
|
|
6
|
+
* Each incoming request creates a fresh server + transport - no session state is maintained.
|
|
7
|
+
*/
|
|
8
|
+
export declare function handleStatelessRequest(request: Request, options: CreateServerOptions): Promise<Response>;
|
|
9
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,OAA0B,GAC3B,EAAE,mBAAmB,GAAG,SAAS,CA0BjC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,QAAQ,CAAC,CAUnB"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
|
|
3
|
+
import { SnapixClient } from "./client.js";
|
|
4
|
+
import { APP_MCP_BASE_URL, APP_MCP_PACKAGE_NAME, APP_MCP_PACKAGE_VERSION } from "./constants.js";
|
|
5
|
+
import { registerGalleryResources } from "./resources/galleries.js";
|
|
6
|
+
import { registerImageResources } from "./resources/images.js";
|
|
7
|
+
import { registerConvertTool } from "./tools/convert.js";
|
|
8
|
+
import { registerCreateGalleryTool } from "./tools/create-gallery.js";
|
|
9
|
+
import { registerDeleteGalleryTool } from "./tools/delete-gallery.js";
|
|
10
|
+
import { registerDeleteImageTool } from "./tools/delete-image.js";
|
|
11
|
+
import { registerGenerateImageTool } from "./tools/generate.js";
|
|
12
|
+
import { registerGetGalleryTool } from "./tools/get-gallery.js";
|
|
13
|
+
import { registerGetImageTool } from "./tools/get-image.js";
|
|
14
|
+
import { registerListGalleriesTool } from "./tools/list-galleries.js";
|
|
15
|
+
import { registerListImagesTool } from "./tools/list-images.js";
|
|
16
|
+
import { registerUpdateGalleryTool } from "./tools/update-gallery.js";
|
|
17
|
+
import { registerUpdateImageTool } from "./tools/update-image.js";
|
|
18
|
+
import { registerUploadImageTool } from "./tools/upload-image.js";
|
|
19
|
+
export function createSnapixMcpServer({ apiKey, baseUrl = APP_MCP_BASE_URL, }) {
|
|
20
|
+
const server = new McpServer({
|
|
21
|
+
name: APP_MCP_PACKAGE_NAME,
|
|
22
|
+
version: APP_MCP_PACKAGE_VERSION,
|
|
23
|
+
});
|
|
24
|
+
const client = new SnapixClient({ baseUrl, apiKey });
|
|
25
|
+
// Register tools
|
|
26
|
+
registerConvertTool(server, client);
|
|
27
|
+
registerUploadImageTool(server, client);
|
|
28
|
+
registerGenerateImageTool(server, client);
|
|
29
|
+
registerListImagesTool(server, client);
|
|
30
|
+
registerGetImageTool(server, client);
|
|
31
|
+
registerUpdateImageTool(server, client);
|
|
32
|
+
registerDeleteImageTool(server, client);
|
|
33
|
+
registerCreateGalleryTool(server, client);
|
|
34
|
+
registerListGalleriesTool(server, client);
|
|
35
|
+
registerGetGalleryTool(server, client);
|
|
36
|
+
registerUpdateGalleryTool(server, client);
|
|
37
|
+
registerDeleteGalleryTool(server, client);
|
|
38
|
+
// Register resources
|
|
39
|
+
registerGalleryResources(server, client);
|
|
40
|
+
registerImageResources(server, client);
|
|
41
|
+
return server;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Creates a stateless request handler for use in web frameworks (Next.js, Hono, etc.).
|
|
45
|
+
* Each incoming request creates a fresh server + transport - no session state is maintained.
|
|
46
|
+
*/
|
|
47
|
+
export async function handleStatelessRequest(request, options) {
|
|
48
|
+
const transport = new WebStandardStreamableHTTPServerTransport({
|
|
49
|
+
sessionIdGenerator: undefined,
|
|
50
|
+
enableJsonResponse: true,
|
|
51
|
+
});
|
|
52
|
+
const server = createSnapixMcpServer(options);
|
|
53
|
+
await server.connect(transport);
|
|
54
|
+
return transport.handleRequest(request);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,wCAAwC,EAAE,MAAM,+DAA+D,CAAC;AAEzH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,MAAM,UAAU,qBAAqB,CAAC,EACpC,MAAM,EACN,OAAO,GAAG,gBAAgB,GACN;IACpB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAErD,iBAAiB;IACjB,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE1C,qBAAqB;IACrB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAgB,EAChB,OAA4B;IAE5B,MAAM,SAAS,GAAG,IAAI,wCAAwC,CAAC;QAC7D,kBAAkB,EAAE,SAAS;QAC7B,kBAAkB,EAAE,IAAI;KACzB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.d.ts","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CA+BlF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function registerConvertTool(server, _client) {
|
|
2
|
+
server.registerTool("snapix_convert_image", {
|
|
3
|
+
title: "Image format conversion guidance",
|
|
4
|
+
description: "The SnapiX convert API streams binary data without storing it, which is not useful in an MCP/LLM context. This tool explains how to achieve image conversion using the upload tool instead.",
|
|
5
|
+
}, async () => {
|
|
6
|
+
return {
|
|
7
|
+
content: [
|
|
8
|
+
{
|
|
9
|
+
type: "text",
|
|
10
|
+
text: [
|
|
11
|
+
"The SnapiX convert API (`POST /api/v1/convert`) streams converted binary data directly back to the caller without storing it.",
|
|
12
|
+
"This is not practical in an MCP context where you need a URL or stored result.",
|
|
13
|
+
"",
|
|
14
|
+
"Instead, use `snapix_upload_image` with the `formatOptions` parameter to convert AND store images:",
|
|
15
|
+
"",
|
|
16
|
+
'- To convert to WebP: set formatOptions to [{"format": "webp"}]',
|
|
17
|
+
'- To convert to AVIF: set formatOptions to [{"format": "avif"}]',
|
|
18
|
+
'- To convert to multiple formats: set formatOptions to [{"format": "webp"}, {"format": "avif"}]',
|
|
19
|
+
"",
|
|
20
|
+
"The upload tool will convert the image, store all variants in cloud storage, and return CDN URLs you can use immediately.",
|
|
21
|
+
"You can also combine format conversion with resizing using the `resizeOptions` parameter.",
|
|
22
|
+
].join("\n"),
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=convert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convert.js","sourceRoot":"","sources":["../../src/tools/convert.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,OAAqB;IAC1E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,KAAK,EAAE,kCAAkC;QACzC,WAAW,EACT,6LAA6L;KAChM,EACD,KAAK,IAAI,EAAE;QACT,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,+HAA+H;wBAC/H,gFAAgF;wBAChF,EAAE;wBACF,oGAAoG;wBACpG,EAAE;wBACF,iEAAiE;wBACjE,iEAAiE;wBACjE,iGAAiG;wBACjG,EAAE;wBACF,2HAA2H;wBAC3H,2FAA2F;qBAC5F,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-gallery.d.ts","sourceRoot":"","sources":["../../src/tools/create-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmCvF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerCreateGalleryTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_create_gallery", {
|
|
5
|
+
title: "Create a gallery",
|
|
6
|
+
description: "Create a new gallery to organize images. Optionally assign existing images by ID. Galleries can be public (shareable) or private. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
name: z.string().min(1).max(256).describe("Name of the gallery"),
|
|
9
|
+
isPublic: z
|
|
10
|
+
.boolean()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Whether the gallery is publicly accessible (defaults to false)"),
|
|
13
|
+
bucketKey: z
|
|
14
|
+
.string()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Storage bucket key (defaults to primary bucket)"),
|
|
17
|
+
imageIds: z
|
|
18
|
+
.array(z.uuid())
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Array of existing image IDs to add to the gallery"),
|
|
21
|
+
}),
|
|
22
|
+
}, async (params) => {
|
|
23
|
+
try {
|
|
24
|
+
const result = await client.createGallery(params);
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return handleToolError(error);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=create-gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-gallery.js","sourceRoot":"","sources":["../../src/tools/create-gallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,wKAAwK;QAC1K,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAChE,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gEAAgE,CAAC;YAC7E,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACf,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAElD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerDeleteGalleryTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=delete-gallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-gallery.d.ts","sourceRoot":"","sources":["../../src/tools/delete-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA6BvF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerDeleteGalleryTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_delete_gallery", {
|
|
5
|
+
title: "Delete a gallery",
|
|
6
|
+
description: "Permanently delete a gallery. Optionally delete all images in the gallery as well. This action cannot be undone. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
galleryId: z.uuid().describe("The UUID of the gallery to delete"),
|
|
9
|
+
deleteImages: z
|
|
10
|
+
.boolean()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("If true, also deletes all images in the gallery. If false or omitted, images are kept but removed from the gallery."),
|
|
13
|
+
}),
|
|
14
|
+
}, async (params) => {
|
|
15
|
+
try {
|
|
16
|
+
const result = await client.deleteGallery(params.galleryId, params.deleteImages);
|
|
17
|
+
return {
|
|
18
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return handleToolError(error);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=delete-gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-gallery.js","sourceRoot":"","sources":["../../src/tools/delete-gallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACjE,YAAY,EAAE,CAAC;iBACZ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,qHAAqH,CACtH;SACJ,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerDeleteImageTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=delete-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-image.d.ts","sourceRoot":"","sources":["../../src/tools/delete-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAuBrF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerDeleteImageTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_delete_image", {
|
|
5
|
+
title: "Delete an image",
|
|
6
|
+
description: "Permanently delete an image and all its variants from SnapiX storage. This action cannot be undone. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
imageId: z.uuid().describe("The UUID of the image to delete"),
|
|
9
|
+
}),
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = await client.deleteImage(params.imageId);
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return handleToolError(error);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=delete-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-image.js","sourceRoot":"","sources":["../../src/tools/delete-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAoB;IAC7E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,0IAA0I;QAC5I,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAC9D,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAExD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerGenerateImageTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=generate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAkEvF"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerGenerateImageTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_generate_image", {
|
|
5
|
+
title: "Generate an image using AI (Gemini API)",
|
|
6
|
+
description: "Generate an image using AI (Gemini API) from a text prompt, optionally guided by a template image URL. The generated image is automatically processed, converted, and uploaded to cloud storage. Returns CDN URLs and generation metadata. Costs 40+ App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
promptText: z.string().describe("Text prompt describing the image to generate"),
|
|
9
|
+
imageUrl: z
|
|
10
|
+
.url()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe("Optional template image URL to guide style/layout of the generated image"),
|
|
13
|
+
name: z.string().max(256).optional().describe("Name for the generated image"),
|
|
14
|
+
description: z.string().max(4096).optional().describe("Description of the image"),
|
|
15
|
+
formatOptions: z
|
|
16
|
+
.array(z.object({
|
|
17
|
+
format: z.enum(["jpeg", "png", "webp", "avif"]).describe("Output image format"),
|
|
18
|
+
}))
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Array of output format options"),
|
|
21
|
+
resizeOptions: z
|
|
22
|
+
.array(z.object({
|
|
23
|
+
width: z.number().positive().optional().describe("Target width in pixels"),
|
|
24
|
+
height: z.number().positive().optional().describe("Target height in pixels"),
|
|
25
|
+
}))
|
|
26
|
+
.optional()
|
|
27
|
+
.describe("Array of resize options"),
|
|
28
|
+
ratio: z
|
|
29
|
+
.number()
|
|
30
|
+
.positive()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("Aspect ratio as a number (e.g., 1.777 for 16:9)"),
|
|
33
|
+
galleries: z
|
|
34
|
+
.array(z.uuid())
|
|
35
|
+
.optional()
|
|
36
|
+
.describe("Array of gallery IDs to add the image to"),
|
|
37
|
+
bucketKey: z.string().optional().describe("Storage bucket key"),
|
|
38
|
+
}),
|
|
39
|
+
}, async (params) => {
|
|
40
|
+
try {
|
|
41
|
+
const result = await client.generateImage({
|
|
42
|
+
promptText: params.promptText,
|
|
43
|
+
imageUrl: params.imageUrl,
|
|
44
|
+
name: params.name,
|
|
45
|
+
description: params.description,
|
|
46
|
+
formatOptions: params.formatOptions,
|
|
47
|
+
resizeOptions: params.resizeOptions,
|
|
48
|
+
ratio: params.ratio,
|
|
49
|
+
galleries: params.galleries,
|
|
50
|
+
bucketKey: params.bucketKey,
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
return handleToolError(error);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerGetGalleryTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=get-gallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-gallery.d.ts","sourceRoot":"","sources":["../../src/tools/get-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAuBpF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerGetGalleryTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_get_gallery", {
|
|
5
|
+
title: "Get a gallery",
|
|
6
|
+
description: "Get details for a single gallery by ID, including all images in the gallery with their CDN URLs. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
galleryId: z.uuid().describe("The UUID of the gallery to retrieve"),
|
|
9
|
+
}),
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = await client.getGallery(params.galleryId);
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return handleToolError(error);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=get-gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-gallery.js","sourceRoot":"","sources":["../../src/tools/get-gallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;SACpE,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAEzD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerGetImageTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=get-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-image.d.ts","sourceRoot":"","sources":["../../src/tools/get-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAuBlF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerGetImageTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_get_image", {
|
|
5
|
+
title: "Get an image",
|
|
6
|
+
description: "Get details for a single image by ID. Returns full metadata, CDN URLs for all variants, and dimensions. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
imageId: z.uuid().describe("The UUID of the image to retrieve"),
|
|
9
|
+
}),
|
|
10
|
+
}, async (params) => {
|
|
11
|
+
try {
|
|
12
|
+
const result = await client.getImage(params.imageId);
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
return handleToolError(error);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=get-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-image.js","sourceRoot":"","sources":["../../src/tools/get-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,MAAiB,EAAE,MAAoB;IAC1E,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EACT,8IAA8I;QAChJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAChE,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAErD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerListGalleriesTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=list-galleries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-galleries.d.ts","sourceRoot":"","sources":["../../src/tools/list-galleries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAoBvF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { handleToolError } from "../errors.js";
|
|
2
|
+
export function registerListGalleriesTool(server, client) {
|
|
3
|
+
server.registerTool("snapix_list_galleries", {
|
|
4
|
+
title: "List galleries",
|
|
5
|
+
description: "List all galleries for the authenticated user. Returns gallery names, IDs, visibility status, and image counts. Free — does not consume App credits.",
|
|
6
|
+
}, async () => {
|
|
7
|
+
try {
|
|
8
|
+
const result = await client.listGalleries();
|
|
9
|
+
return {
|
|
10
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
return handleToolError(error);
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=list-galleries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-galleries.js","sourceRoot":"","sources":["../../src/tools/list-galleries.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,gBAAgB;QACvB,WAAW,EACT,sJAAsJ;KACzJ,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAE5C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerListImagesTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=list-images.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-images.d.ts","sourceRoot":"","sources":["../../src/tools/list-images.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmCpF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerListImagesTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_list_images", {
|
|
5
|
+
title: "List images",
|
|
6
|
+
description: "List images in the user's SnapiX account with pagination. Returns image metadata, CDN URLs, and account statistics. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
page: z.number().int().positive().optional().describe("Page number (default: 1)"),
|
|
9
|
+
limit: z
|
|
10
|
+
.number()
|
|
11
|
+
.int()
|
|
12
|
+
.positive()
|
|
13
|
+
.max(100)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe("Images per page (default: 10, max: 100)"),
|
|
16
|
+
sort: z
|
|
17
|
+
.enum(["asc", "desc"])
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Sort order by creation date (default: asc, newer first)"),
|
|
20
|
+
bucketKey: z.string().optional().describe("Filter by storage bucket key"),
|
|
21
|
+
}),
|
|
22
|
+
}, async (params) => {
|
|
23
|
+
try {
|
|
24
|
+
const result = await client.listImages(params);
|
|
25
|
+
return {
|
|
26
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
return handleToolError(error);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=list-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-images.js","sourceRoot":"","sources":["../../src/tools/list-images.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAoB;IAC5E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,0JAA0J;QAC5J,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YACjF,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,IAAI,EAAE,CAAC;iBACJ,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACrB,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;YACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC1E,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerUpdateGalleryTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=update-gallery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-gallery.d.ts","sourceRoot":"","sources":["../../src/tools/update-gallery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA4BvF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerUpdateGalleryTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_update_gallery", {
|
|
5
|
+
title: "Update a gallery",
|
|
6
|
+
description: "Update an existing gallery's name or visibility. Free — does not consume App credits.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
galleryId: z.uuid().describe("The UUID of the gallery to update"),
|
|
9
|
+
name: z.string().min(1).max(256).optional().describe("New name for the gallery"),
|
|
10
|
+
isPublic: z.boolean().optional().describe("Whether the gallery is publicly accessible"),
|
|
11
|
+
}),
|
|
12
|
+
}, async (params) => {
|
|
13
|
+
try {
|
|
14
|
+
const result = await client.updateGallery(params.galleryId, {
|
|
15
|
+
name: params.name,
|
|
16
|
+
isPublic: params.isPublic,
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
return handleToolError(error);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=update-gallery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-gallery.js","sourceRoot":"","sources":["../../src/tools/update-gallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,yBAAyB,CAAC,MAAiB,EAAE,MAAoB;IAC/E,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,uFAAuF;QACzF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACjE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;YAChF,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACxF,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,EAAE;gBAC1D,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import { type SnapixClient } from "../../../snapix-mcp-server/src/client.js";
|
|
3
|
+
export declare function registerUpdateImageTool(server: McpServer, client: SnapixClient): void;
|
|
4
|
+
//# sourceMappingURL=update-image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-image.d.ts","sourceRoot":"","sources":["../../src/tools/update-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAG7E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAmCrF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { handleToolError } from "../errors.js";
|
|
3
|
+
export function registerUpdateImageTool(server, client) {
|
|
4
|
+
server.registerTool("snapix_update_image", {
|
|
5
|
+
title: "Update an image",
|
|
6
|
+
description: "Update an existing image's metadata (name, description) or gallery assignments. Can also re-convert the image with new format/resize options. May consume App credits if image processing is involved.",
|
|
7
|
+
inputSchema: z.object({
|
|
8
|
+
imageId: z.uuid().describe("The UUID of the image to update"),
|
|
9
|
+
name: z.string().max(256).optional().describe("New name for the image"),
|
|
10
|
+
description: z.string().max(4096).optional().describe("New description"),
|
|
11
|
+
galleries: z
|
|
12
|
+
.array(z.uuid())
|
|
13
|
+
.optional()
|
|
14
|
+
.describe("New gallery IDs to assign (replaces existing). Pass empty array to remove from all galleries."),
|
|
15
|
+
}),
|
|
16
|
+
}, async (params) => {
|
|
17
|
+
try {
|
|
18
|
+
const result = await client.updateImage(params.imageId, {
|
|
19
|
+
name: params.name,
|
|
20
|
+
description: params.description,
|
|
21
|
+
galleries: params.galleries,
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
return handleToolError(error);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=update-image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-image.js","sourceRoot":"","sources":["../../src/tools/update-image.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,UAAU,uBAAuB,CAAC,MAAiB,EAAE,MAAoB;IAC7E,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,wMAAwM;QAC1M,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;YAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACvE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACxE,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACf,QAAQ,EAAE;iBACV,QAAQ,CACP,+FAA+F,CAChG;SACJ,CAAC;KACH,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE;gBACtD,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-image.d.ts","sourceRoot":"","sources":["../../src/tools/upload-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CA6ErF"}
|