@clipform/mcp-server 1.0.0 → 1.1.3

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.
Files changed (58) hide show
  1. package/README.md +123 -87
  2. package/dist/lib/api-client.d.ts +5 -0
  3. package/dist/lib/api-client.js +47 -0
  4. package/dist/lib/api-client.js.map +1 -1
  5. package/dist/lib/config.d.ts +1 -0
  6. package/dist/lib/config.js +63 -0
  7. package/dist/lib/config.js.map +1 -1
  8. package/dist/prompts.d.ts +2 -0
  9. package/dist/prompts.js +123 -0
  10. package/dist/prompts.js.map +1 -0
  11. package/dist/server.js +45 -1
  12. package/dist/server.js.map +1 -1
  13. package/dist/tools/attach-question-audio.d.ts +2 -0
  14. package/dist/tools/attach-question-audio.js +37 -0
  15. package/dist/tools/attach-question-audio.js.map +1 -0
  16. package/dist/tools/delete-question-media.d.ts +2 -0
  17. package/dist/tools/delete-question-media.js +29 -0
  18. package/dist/tools/delete-question-media.js.map +1 -0
  19. package/dist/tools/generate-slideshow.d.ts +2 -0
  20. package/dist/tools/generate-slideshow.js +52 -0
  21. package/dist/tools/generate-slideshow.js.map +1 -0
  22. package/dist/tools/generate-tts.d.ts +2 -0
  23. package/dist/tools/generate-tts.js +48 -0
  24. package/dist/tools/generate-tts.js.map +1 -0
  25. package/dist/tools/get-daily-content.d.ts +2 -0
  26. package/dist/tools/get-daily-content.js +66 -0
  27. package/dist/tools/get-daily-content.js.map +1 -0
  28. package/dist/tools/get-question-media.d.ts +2 -0
  29. package/dist/tools/get-question-media.js +39 -0
  30. package/dist/tools/get-question-media.js.map +1 -0
  31. package/dist/tools/get-trivia.d.ts +2 -0
  32. package/dist/tools/get-trivia.js +49 -0
  33. package/dist/tools/get-trivia.js.map +1 -0
  34. package/dist/tools/log-generation.d.ts +2 -0
  35. package/dist/tools/log-generation.js +34 -0
  36. package/dist/tools/log-generation.js.map +1 -0
  37. package/dist/tools/lookup-country.d.ts +2 -0
  38. package/dist/tools/lookup-country.js +38 -0
  39. package/dist/tools/lookup-country.js.map +1 -0
  40. package/dist/tools/search-images.d.ts +2 -0
  41. package/dist/tools/search-images.js +36 -0
  42. package/dist/tools/search-images.js.map +1 -0
  43. package/dist/tools/search-knowledge.d.ts +2 -0
  44. package/dist/tools/search-knowledge.js +40 -0
  45. package/dist/tools/search-knowledge.js.map +1 -0
  46. package/dist/tools/search-news.d.ts +2 -0
  47. package/dist/tools/search-news.js +38 -0
  48. package/dist/tools/search-news.js.map +1 -0
  49. package/dist/tools/search-videos.d.ts +2 -0
  50. package/dist/tools/search-videos.js +37 -0
  51. package/dist/tools/search-videos.js.map +1 -0
  52. package/dist/tools/set-question-logic.d.ts +2 -0
  53. package/dist/tools/set-question-logic.js +54 -0
  54. package/dist/tools/set-question-logic.js.map +1 -0
  55. package/dist/tools/upload-question-media.d.ts +2 -0
  56. package/dist/tools/upload-question-media.js +41 -0
  57. package/dist/tools/upload-question-media.js.map +1 -0
  58. package/package.json +6 -6
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ import { callInternalApi, errorResult, textResult } from "../lib/api-client.js";
3
+ export function registerSearchNewsTool(server) {
4
+ server.registerTool("formgen_search_news", {
5
+ title: "Search News",
6
+ description: `Search for current news articles from NewsAPI and The Guardian. Use this to find trending topics, recent events, and current affairs for topical quiz content.`,
7
+ inputSchema: {
8
+ query: z.string().describe("News search query (e.g. 'climate change', 'space exploration', 'UK politics')"),
9
+ count: z.number().min(1).max(15).default(5).optional()
10
+ .describe("Max results per provider (default 5)"),
11
+ },
12
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
13
+ }, async ({ query, count }) => {
14
+ const result = await callInternalApi("/internal/formgen/search-news", {
15
+ body: { query, count },
16
+ });
17
+ if (!result.ok)
18
+ return errorResult(result.error);
19
+ const results = result.data.results;
20
+ if (!results.length)
21
+ return textResult(`No news articles found for "${query}".`);
22
+ const lines = [`Found ${results.length} articles for "${query}":\n`];
23
+ for (const article of results) {
24
+ lines.push(`- [${article.source}] ${article.title}`);
25
+ if (article.description)
26
+ lines.push(` ${article.description}`);
27
+ if (article.author)
28
+ lines.push(` Author: ${article.author}`);
29
+ lines.push(` Date: ${article.publishedAt}`);
30
+ lines.push(` URL: ${article.url}`);
31
+ if (article.imageUrl)
32
+ lines.push(` Image: ${article.imageUrl}`);
33
+ lines.push("");
34
+ }
35
+ return textResult(lines.join("\n"));
36
+ });
37
+ }
38
+ //# sourceMappingURL=search-news.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-news.js","sourceRoot":"","sources":["../../src/tools/search-news.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,gKAAgK;QAC7K,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;YAC3G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;iBACnD,QAAQ,CAAC,sCAAsC,CAAC;SACpD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,+BAA+B,EAAE;YACpE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAI,MAAM,CAAC,IAAY,CAAC,OAAgB,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC,+BAA+B,KAAK,IAAI,CAAC,CAAC;QAEjF,MAAM,KAAK,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,kBAAkB,KAAK,MAAM,CAAC,CAAC;QACrE,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YACrD,IAAI,OAAO,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAChE,IAAI,OAAO,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9D,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACpC,IAAI,OAAO,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerSearchVideosTool(server: McpServer): void;
@@ -0,0 +1,37 @@
1
+ import { z } from "zod";
2
+ import { callInternalApi, errorResult, textResult } from "../lib/api-client.js";
3
+ export function registerSearchVideosTool(server) {
4
+ server.registerTool("formgen_search_videos", {
5
+ title: "Search Videos",
6
+ description: `Search for royalty-free stock video clips from Pexels and Pixabay. Returns video URLs with duration and resolution info.`,
7
+ inputSchema: {
8
+ query: z.string().describe("Search query (e.g. 'ocean waves', 'city timelapse')"),
9
+ count: z.number().min(1).max(10).default(3).optional()
10
+ .describe("Max results per provider (default 3)"),
11
+ },
12
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true },
13
+ }, async ({ query, count }) => {
14
+ const result = await callInternalApi("/internal/formgen/search-videos", {
15
+ body: { query, count },
16
+ });
17
+ if (!result.ok)
18
+ return errorResult(result.error);
19
+ const results = result.data.results;
20
+ if (!results.length)
21
+ return textResult(`No videos found for "${query}".`);
22
+ const lines = [`Found ${results.length} videos for "${query}":\n`];
23
+ for (const vid of results) {
24
+ lines.push(`- [${vid.source}] ${vid.title}`);
25
+ lines.push(` URL: ${vid.url}`);
26
+ if (vid.duration)
27
+ lines.push(` Duration: ${vid.duration}s`);
28
+ if (vid.width && vid.height)
29
+ lines.push(` Resolution: ${vid.width}x${vid.height}`);
30
+ if (vid.attribution)
31
+ lines.push(` Attribution: ${vid.attribution}`);
32
+ lines.push("");
33
+ }
34
+ return textResult(lines.join("\n"));
35
+ });
36
+ }
37
+ //# sourceMappingURL=search-videos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-videos.js","sourceRoot":"","sources":["../../src/tools/search-videos.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,0HAA0H;QACvI,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YACjF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;iBACnD,QAAQ,CAAC,sCAAsC,CAAC;SACpD;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;KACvG,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,iCAAiC,EAAE;YACtE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEjD,MAAM,OAAO,GAAI,MAAM,CAAC,IAAY,CAAC,OAAgB,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,CAAC,SAAS,OAAO,CAAC,MAAM,gBAAgB,KAAK,MAAM,CAAC,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,QAAQ;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC;YAC7D,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACpF,IAAI,GAAG,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,kBAAkB,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerSetQuestionLogicTool(server: McpServer): void;
@@ -0,0 +1,54 @@
1
+ import { z } from "zod";
2
+ import { callApi, errorResult, textResult } from "../lib/api-client.js";
3
+ const LogicRuleSchema = z.object({
4
+ option_content: z
5
+ .string()
6
+ .optional()
7
+ .describe("The option text to match. Omit for a default rule (applies to all unmatched options)."),
8
+ target_question_id: z
9
+ .string()
10
+ .describe("The question ID to jump to when this rule matches"),
11
+ });
12
+ export function registerSetQuestionLogicTool(server) {
13
+ server.registerTool("clipform_set_logic", {
14
+ title: "Set Question Logic",
15
+ description: `Set branching logic on a question. Routes respondents to different questions based on their answer.
16
+
17
+ Each rule maps an option (by its text content) to a target question. Rules without option_content are "default" rules applied to all unmatched options.
18
+
19
+ Example: Route correct answer to a "Well done" node, everything else to "Wrong":
20
+ rules: [
21
+ { option_content: "42", target_question_id: "well-done-id" },
22
+ { target_question_id: "wrong-id" }
23
+ ]`,
24
+ inputSchema: {
25
+ form_id: z.string().describe("The form ID"),
26
+ edit_token: z.string().describe("The edit token"),
27
+ question_id: z
28
+ .string()
29
+ .describe("The question ID to set logic on"),
30
+ rules: z
31
+ .array(LogicRuleSchema)
32
+ .min(1)
33
+ .describe("Branching rules. Each maps an option or default to a target question."),
34
+ },
35
+ annotations: {
36
+ readOnlyHint: false,
37
+ destructiveHint: false,
38
+ idempotentHint: true,
39
+ openWorldHint: true,
40
+ },
41
+ }, async ({ form_id, edit_token, question_id, rules }) => {
42
+ const result = await callApi(`/forms/${form_id}/questions/${question_id}/logic`, {
43
+ method: "PUT",
44
+ token: edit_token,
45
+ body: { rules },
46
+ });
47
+ if (!result.ok) {
48
+ return errorResult(result.error);
49
+ }
50
+ return textResult(`Logic set on question ${question_id}.\n` +
51
+ `Rules created: ${result.data.rules_count}`);
52
+ });
53
+ }
54
+ //# sourceMappingURL=set-question-logic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-question-logic.js","sourceRoot":"","sources":["../../src/tools/set-question-logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,cAAc,EAAE,CAAC;SACd,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,uFAAuF,CACxF;IACH,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,QAAQ,CAAC,mDAAmD,CAAC;CACjE,CAAC,CAAC;AAEH,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EAAE;;;;;;;;IAQf;QACE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,eAAe,CAAC;iBACtB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,uEAAuE,CAAC;SACrF;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;QACpD,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,UAAU,OAAO,cAAc,WAAW,QAAQ,EAClD;YACE,MAAM,EAAE,KAAK;YACb,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,EAAE,KAAK,EAAE;SAChB,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,UAAU,CACf,yBAAyB,WAAW,KAAK;YACvC,kBAAkB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAC9C,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerUploadQuestionMediaTool(server: McpServer): void;
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { callApi, errorResult, textResult } from "../lib/api-client.js";
3
+ export function registerUploadQuestionMediaTool(server) {
4
+ server.registerTool("clipform_upload_question_media", {
5
+ title: "Upload Question Media",
6
+ description: `Initiate a media upload for a question. Returns a signed upload URL - upload the file directly to that URL. Only works on question types that support media (choice, open, scale, button). For video: returns a Mux TUS upload URL. For image: returns a Supabase presigned PUT URL.`,
7
+ inputSchema: {
8
+ form_id: z.string().describe("The form ID"),
9
+ edit_token: z.string().describe("The edit token"),
10
+ question_id: z.string().describe("The question ID"),
11
+ media_type: z
12
+ .enum(["video", "still"])
13
+ .describe("Type of media to upload"),
14
+ media_source: z
15
+ .enum(["uploaded", "recorded"])
16
+ .default("uploaded")
17
+ .describe("How the media was created"),
18
+ },
19
+ annotations: {
20
+ readOnlyHint: false,
21
+ destructiveHint: false,
22
+ idempotentHint: false,
23
+ openWorldHint: true,
24
+ },
25
+ }, async ({ form_id, edit_token, question_id, media_type, media_source }) => {
26
+ const result = await callApi(`/forms/${form_id}/questions/${question_id}/media`, {
27
+ method: "POST",
28
+ token: edit_token,
29
+ body: { media_type, media_source },
30
+ });
31
+ if (!result.ok) {
32
+ return errorResult(result.error);
33
+ }
34
+ return textResult(`Media upload initiated.\n` +
35
+ `Media ID: ${result.data.media_id}\n` +
36
+ `Upload URL: ${result.data.upload_url}\n` +
37
+ `Upload method: ${result.data.upload_method}\n` +
38
+ `Upload the file directly to the upload URL using ${result.data.upload_method === "tus" ? "TUS resumable upload" : "HTTP PUT"}.`);
39
+ });
40
+ }
41
+ //# sourceMappingURL=upload-question-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-question-media.js","sourceRoot":"","sources":["../../src/tools/upload-question-media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAExE,MAAM,UAAU,+BAA+B,CAAC,MAAiB;IAC/D,MAAM,CAAC,YAAY,CACjB,gCAAgC,EAChC;QACE,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,sRAAsR;QACnS,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC3C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACnD,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;iBACxB,QAAQ,CAAC,yBAAyB,CAAC;YACtC,YAAY,EAAE,CAAC;iBACZ,IAAI,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;iBAC9B,OAAO,CAAC,UAAU,CAAC;iBACnB,QAAQ,CAAC,2BAA2B,CAAC;SACzC;QACD,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,KAAK;YACrB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,UAAU,OAAO,cAAc,WAAW,QAAQ,EAClD;YACE,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,UAAU;YACjB,IAAI,EAAE,EAAE,UAAU,EAAE,YAAY,EAAE;SACnC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,OAAO,UAAU,CACf,2BAA2B;YACzB,aAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI;YACrC,eAAe,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI;YACzC,kBAAkB,MAAM,CAAC,IAAI,CAAC,aAAa,IAAI;YAC/C,oDAAoD,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,UAAU,GAAG,CACnI,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@clipform/mcp-server",
3
- "version": "1.0.0",
3
+ "version": "1.1.3",
4
4
  "description": "MCP server for building and managing Clipform video forms",
5
5
  "license": "MIT",
6
- "repository": {
7
- "type": "git",
8
- "url": "https://github.com/andy-cb-smith/vid-master",
9
- "directory": "packages/mcp-server"
10
- },
6
+ "homepage": "https://clipform.io",
11
7
  "type": "module",
12
8
  "main": "dist/index.js",
9
+ "exports": {
10
+ ".": "./dist/index.js",
11
+ "./server": "./dist/server.js"
12
+ },
13
13
  "bin": {
14
14
  "mcp-server-clipform": "dist/index.js"
15
15
  },