clipugc 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -12,6 +12,7 @@ clipugc auth login
12
12
 
13
13
  Requires **Node.js >= 20**. Create an API key in the
14
14
  [ClipUGC dashboard](https://clipugc.com/dashboard) (API keys section).
15
+ API keys are available on paid plans (Professional and Business).
15
16
 
16
17
  ## Use it with Claude Code
17
18
 
@@ -40,6 +41,51 @@ See **[docs/skills.md](docs/skills.md)** for what each skill knows.
40
41
 
41
42
  Prefer flags? Everything below works standalone — the skills just drive the same CLI.
42
43
 
44
+ ## Use from Claude Code / Cursor
45
+
46
+ The CLI is also an MCP server. `clipugc mcp` speaks the Model Context Protocol over
47
+ stdio, so any MCP client can create characters, looks, clips and merged ads as tools,
48
+ without shelling out to the commands above.
49
+
50
+ Log in once so the server has a key (it reads the same `~/.config/clipugc/config.json`
51
+ the CLI uses):
52
+
53
+ ```bash
54
+ npm install -g clipugc
55
+ clipugc auth login
56
+ ```
57
+
58
+ **Claude Code**
59
+
60
+ ```bash
61
+ claude mcp add clipugc -- npx -y clipugc mcp
62
+ ```
63
+
64
+ **Cursor** (Settings > MCP, or `.cursor/mcp.json` in your project)
65
+
66
+ ```json
67
+ {
68
+ "mcpServers": {
69
+ "clipugc": {
70
+ "command": "npx",
71
+ "args": ["-y", "clipugc", "mcp"]
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ The same block works in Claude Desktop's `claude_desktop_config.json`. If you would
78
+ rather not run `clipugc auth login` on that machine, add an `env` block with
79
+ `CLIPUGC_API_KEY` set to a key from the dashboard.
80
+
81
+ Tools: `list_characters`, `create_character`, `generate_image`, `list_images`,
82
+ `create_clip`, `create_motion_clip`, `merge_ad`, `get_video`, `download_video`,
83
+ `get_credits`, `list_hooks`. Arguments follow the CLI flags (`--per-page` becomes
84
+ `per_page`). Generation tools return the job id right away, like the CLI without
85
+ `--wait`; poll with `get_video` (clips and ads) or `list_images` (looks) until the
86
+ status is `completed`. Every tool reports its credit cost in its description, and
87
+ `get_credits` returns the live prices.
88
+
43
89
  ## What it produces
44
90
 
45
91
  One character, cast once. Every picture below is the **same person** — only the
package/dist/cli.js CHANGED
@@ -10,6 +10,7 @@ import { registerAdsCommands } from './commands/ads.js';
10
10
  import { registerVideosCommands } from './commands/videos.js';
11
11
  import { registerHooksCommands } from './commands/hooks.js';
12
12
  import { registerStoriesCommands } from './commands/stories.js';
13
+ import { registerMcpCommand } from './commands/mcp.js';
13
14
  export function createCli() {
14
15
  const program = new Command();
15
16
  program
@@ -30,6 +31,7 @@ export function createCli() {
30
31
  registerAdsCommands(program);
31
32
  registerHooksCommands(program);
32
33
  registerStoriesCommands(program);
34
+ registerMcpCommand(program);
33
35
  return program;
34
36
  }
35
37
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,yGAAyG;QACzG,2FAA2F,CAC5F;SACA,OAAO,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,uBAAuB,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACnD,kBAAkB,CAAC,wBAAwB,CAAC;SAC5C,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAElC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAEjC,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,UAAU,SAAS;IACvB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CACV,yGAAyG;QACzG,2FAA2F,CAC5F;SACA,OAAO,CAAC,UAAU,EAAE,EAAE,eAAe,EAAE,uBAAuB,CAAC;SAC/D,MAAM,CAAC,QAAQ,EAAE,iCAAiC,CAAC;SACnD,kBAAkB,CAAC,wBAAwB,CAAC;SAC5C,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAElC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACpC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAChC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACjC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE5B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -61,7 +61,7 @@ export function registerAdsCommands(program) {
61
61
  ads
62
62
  .command('show <adId>')
63
63
  .description('Show details of a finished UGC ad')
64
- .action(async (adId, cmd) => {
64
+ .action(async (adId, _opts, cmd) => {
65
65
  const json = isJsonMode(cmd);
66
66
  const api = await createApiClient();
67
67
  const ad = await getMergedVideo(api, adId);
@@ -1 +1 @@
1
- {"version":3,"file":"ads.js","sourceRoot":"","sources":["../../src/commands/ads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ads.js","sourceRoot":"","sources":["../../src/commands/ads.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Command } from 'commander';
2
+ /**
3
+ * `clipugc mcp` starts a stdio Model Context Protocol server so MCP clients (Claude Code,
4
+ * Cursor, Claude Desktop) can drive ClipUGC through tools instead of shelling out to the CLI.
5
+ * Register it with e.g. `claude mcp add clipugc -- npx -y clipugc mcp`.
6
+ */
7
+ export declare function registerMcpCommand(program: Command): void;
@@ -0,0 +1,15 @@
1
+ import { startMcpServer } from '../mcp/server.js';
2
+ /**
3
+ * `clipugc mcp` starts a stdio Model Context Protocol server so MCP clients (Claude Code,
4
+ * Cursor, Claude Desktop) can drive ClipUGC through tools instead of shelling out to the CLI.
5
+ * Register it with e.g. `claude mcp add clipugc -- npx -y clipugc mcp`.
6
+ */
7
+ export function registerMcpCommand(program) {
8
+ program
9
+ .command('mcp')
10
+ .description('Start a stdio MCP server exposing ClipUGC as tools for Claude Code, Cursor and other MCP clients (uses the same API key as the CLI)')
11
+ .action(async () => {
12
+ await startMcpServer();
13
+ });
14
+ }
15
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/commands/mcp.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CACV,qIAAqI,CACtI;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -204,7 +204,7 @@ export function registerVideosCommands(program) {
204
204
  videos
205
205
  .command('show <id>')
206
206
  .description('Show details of a character video')
207
- .action(async (id, cmd) => {
207
+ .action(async (id, _opts, cmd) => {
208
208
  const json = isJsonMode(cmd);
209
209
  const api = await createApiClient();
210
210
  const video = await getVideo(api, id);
@@ -231,7 +231,7 @@ export function registerVideosCommands(program) {
231
231
  videos
232
232
  .command('status <id>')
233
233
  .description('Check the processing status of a character video')
234
- .action(async (id, cmd) => {
234
+ .action(async (id, _opts, cmd) => {
235
235
  const json = isJsonMode(cmd);
236
236
  const api = await createApiClient();
237
237
  const check = await checkVideoStatus(api, id);
@@ -1 +1 @@
1
- {"version":3,"file":"videos.js","sourceRoot":"","sources":["../../src/commands/videos.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"videos.js","sourceRoot":"","sources":["../../src/commands/videos.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `clipugc mcp` server: exposes the tools in ./tools.ts over the Model Context Protocol.
3
+ *
4
+ * Transport is stdio, so stdout belongs to the protocol. Everything human-readable goes to
5
+ * stderr, and console.log is redirected there for the lifetime of the server as a guard
6
+ * against any dependency printing while a tool runs.
7
+ */
8
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ export declare const MCP_SERVER_NAME = "clipugc";
10
+ /** Build the server with every tool registered. Shared by `clipugc mcp` and the tests. */
11
+ export declare function createMcpServer(): McpServer;
12
+ /** Start the stdio server and resolve when the client disconnects. */
13
+ export declare function startMcpServer(): Promise<void>;
@@ -0,0 +1,57 @@
1
+ /**
2
+ * `clipugc mcp` server: exposes the tools in ./tools.ts over the Model Context Protocol.
3
+ *
4
+ * Transport is stdio, so stdout belongs to the protocol. Everything human-readable goes to
5
+ * stderr, and console.log is redirected there for the lifetime of the server as a guard
6
+ * against any dependency printing while a tool runs.
7
+ */
8
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
9
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
+ import { getVersion } from '../version.js';
11
+ import { getConfigPath, resolveApiBaseUrl, resolveApiKey } from '../utils/config.js';
12
+ import { TOOLS, runTool } from './tools.js';
13
+ export const MCP_SERVER_NAME = 'clipugc';
14
+ /** Build the server with every tool registered. Shared by `clipugc mcp` and the tests. */
15
+ export function createMcpServer() {
16
+ const server = new McpServer({ name: MCP_SERVER_NAME, version: getVersion() }, {
17
+ instructions: 'ClipUGC makes AI influencer style UGC ads for mobile apps. Pipeline: create_character (2 credits) -> ' +
18
+ 'generate_image for more looks of the same face (2 each) -> create_clip (7 for 5s, 13 for 10s) or create_motion_clip ' +
19
+ '(3 per driver second) -> merge_ad with the app screen recording and a hook -> download_video. Generation tools return ' +
20
+ 'immediately; poll get_video (clips and ads) or list_images (looks) until status is completed. Call get_credits before ' +
21
+ 'spending. Clip ids and ad ids (merged_video_id) are different id spaces.',
22
+ });
23
+ for (const tool of TOOLS) {
24
+ server.registerTool(tool.name, {
25
+ title: tool.title,
26
+ description: tool.description,
27
+ inputSchema: tool.inputSchema,
28
+ annotations: tool.annotations,
29
+ }, async (args) => runTool(tool, args));
30
+ }
31
+ return server;
32
+ }
33
+ /** Start the stdio server and resolve when the client disconnects. */
34
+ export async function startMcpServer() {
35
+ const toStderr = (...args) => {
36
+ console.error(...args);
37
+ };
38
+ console.log = toStderr;
39
+ console.info = toStderr;
40
+ console.debug = toStderr;
41
+ console.warn = toStderr;
42
+ const server = createMcpServer();
43
+ const transport = new StdioServerTransport();
44
+ const closed = new Promise((resolve) => {
45
+ server.server.onclose = () => resolve();
46
+ });
47
+ await server.connect(transport);
48
+ const apiKey = await resolveApiKey();
49
+ const baseUrl = await resolveApiBaseUrl();
50
+ console.error(`clipugc mcp ${getVersion()}: ${TOOLS.length} tools ready on stdio (api: ${baseUrl})`);
51
+ if (!apiKey) {
52
+ console.error(`clipugc mcp: no API key found (config ${getConfigPath()}, env CLIPUGC_API_KEY). ` +
53
+ 'Tools will fail until you run `clipugc auth login`.');
54
+ }
55
+ await closed;
56
+ }
57
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AAEzC,0FAA0F;AAC1F,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAChD;QACE,YAAY,EACV,uGAAuG;YACvG,sHAAsH;YACtH,wHAAwH;YACxH,wHAAwH;YACxH,0EAA0E;KAC7E,CACF,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CACpC,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;QAC5C,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IAExB,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;IACrC,MAAM,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,eAAe,UAAU,EAAE,KAAK,KAAK,CAAC,MAAM,+BAA+B,OAAO,GAAG,CAAC,CAAC;IACrG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,yCAAyC,aAAa,EAAE,0BAA0B;YAChF,qDAAqD,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * MCP tool definitions for `clipugc mcp`.
3
+ *
4
+ * Each tool is a thin adapter over the existing service layer (src/services/*): it maps
5
+ * MCP arguments (named after the matching CLI flags, with underscores instead of dashes)
6
+ * onto the service call the CLI command would make, and formats the result as JSON text.
7
+ * No HTTP happens here; the services own the endpoints.
8
+ *
9
+ * Long-running actions (images, clips, merges) return the job id right away, the same way
10
+ * the CLI behaves without --wait. The caller polls with get_video / list_images.
11
+ *
12
+ * Nothing in this file may write to stdout: stdout is the MCP transport.
13
+ */
14
+ import { z } from 'zod';
15
+ export declare const TOOL_NAMES: readonly ["list_characters", "create_character", "generate_image", "list_images", "create_clip", "create_motion_clip", "merge_ad", "get_video", "download_video", "get_credits", "list_hooks"];
16
+ export type ToolName = (typeof TOOL_NAMES)[number];
17
+ /** Zod raw shape: the SDK builds the JSON schema from it. */
18
+ export type ToolShape = Record<string, z.ZodType>;
19
+ export interface ToolAnnotations {
20
+ readOnlyHint?: boolean;
21
+ destructiveHint?: boolean;
22
+ idempotentHint?: boolean;
23
+ openWorldHint?: boolean;
24
+ }
25
+ export interface ToolDefinition<Shape extends ToolShape = ToolShape> {
26
+ name: ToolName;
27
+ title: string;
28
+ description: string;
29
+ inputSchema: Shape;
30
+ annotations: ToolAnnotations;
31
+ /**
32
+ * Returns plain data; runTool() turns it into an MCP result. Declared as a method so the
33
+ * per-tool argument types stay bivariant and every tool fits into `readonly ToolDefinition[]`.
34
+ */
35
+ handler(args: z.output<z.ZodObject<Shape>>): Promise<unknown>;
36
+ }
37
+ /** MCP CallToolResult, limited to what these tools produce (the SDK type is open-ended). */
38
+ export interface ToolResult {
39
+ [key: string]: unknown;
40
+ content: Array<{
41
+ type: 'text';
42
+ text: string;
43
+ }>;
44
+ isError?: boolean;
45
+ }
46
+ export declare const TOOLS: readonly ToolDefinition[];
47
+ export declare function getTool(name: string): ToolDefinition | undefined;
48
+ /** Map a thrown error to the text an MCP client (and its LLM) can act on. */
49
+ export declare function formatToolError(error: unknown): string;
50
+ /**
51
+ * Validate the raw arguments against the tool's schema, run it, and wrap the outcome in an
52
+ * MCP CallToolResult. Never throws: failures come back as isError results so the client can
53
+ * show them to the model.
54
+ */
55
+ export declare function runTool(tool: ToolDefinition, rawArgs: unknown): Promise<ToolResult>;
@@ -0,0 +1,419 @@
1
+ /**
2
+ * MCP tool definitions for `clipugc mcp`.
3
+ *
4
+ * Each tool is a thin adapter over the existing service layer (src/services/*): it maps
5
+ * MCP arguments (named after the matching CLI flags, with underscores instead of dashes)
6
+ * onto the service call the CLI command would make, and formats the result as JSON text.
7
+ * No HTTP happens here; the services own the endpoints.
8
+ *
9
+ * Long-running actions (images, clips, merges) return the job id right away, the same way
10
+ * the CLI behaves without --wait. The caller polls with get_video / list_images.
11
+ *
12
+ * Nothing in this file may write to stdout: stdout is the MCP transport.
13
+ */
14
+ import path from 'node:path';
15
+ import { z } from 'zod';
16
+ import { createApiClient } from '../services/api.js';
17
+ import * as characters from '../services/characters.service.js';
18
+ import * as images from '../services/images.service.js';
19
+ import * as videos from '../services/videos.service.js';
20
+ import * as ads from '../services/ads.service.js';
21
+ import * as user from '../services/user.service.js';
22
+ import * as hooks from '../services/hooks.service.js';
23
+ import * as uploads from '../services/upload.service.js';
24
+ import { AuthError, CliError, InsufficientCreditsError, PremiumRequiredError } from '../utils/errors.js';
25
+ export const TOOL_NAMES = [
26
+ 'list_characters',
27
+ 'create_character',
28
+ 'generate_image',
29
+ 'list_images',
30
+ 'create_clip',
31
+ 'create_motion_clip',
32
+ 'merge_ad',
33
+ 'get_video',
34
+ 'download_video',
35
+ 'get_credits',
36
+ 'list_hooks',
37
+ ];
38
+ const DASHBOARD_URL = 'https://clipugc.com/dashboard';
39
+ const AUTH_HELP = 'No valid ClipUGC API key is available to the MCP server. Create an API key in the ClipUGC dashboard ' +
40
+ `(${DASHBOARD_URL}, API Keys section, paid plans) and either run \`clipugc auth login\` in a terminal ` +
41
+ 'on this machine or set CLIPUGC_API_KEY in the MCP server environment. Then call the tool again.';
42
+ const POLL_CLIP = 'Generation runs in the background. Poll get_video with {"id": <clip id>, "kind": "clip"} every 5 to 10 seconds ' +
43
+ 'until status is "completed" or "failed", then call download_video.';
44
+ const POLL_AD = 'The merge renders in the background. Poll get_video with {"id": <merged_video_id>, "kind": "ad"} every 5 to 10 seconds ' +
45
+ 'until status is "completed" or "failed", then call download_video with kind "ad".';
46
+ const POLL_IMAGE = 'Looks generate in the background. Poll list_images with the same character id every 5 to 10 seconds until each ' +
47
+ 'new look has status "completed" (or "failed"), then pass the look id to create_clip.';
48
+ function define(def) {
49
+ return def;
50
+ }
51
+ function parseCharacterListScope(scope) {
52
+ return scope ?? 'mine';
53
+ }
54
+ /** Resolve the --image / --photo pair the way `videos create` does (photo is uploaded first). */
55
+ async function resolveImageSource(api, args) {
56
+ const hasImage = Boolean(args.image);
57
+ const hasPhoto = Boolean(args.photo);
58
+ if (hasImage === hasPhoto) {
59
+ throw new CliError('Provide exactly one image source: "image" (the id of a generated character look) or "photo" (path to your own photo).', 2);
60
+ }
61
+ if (hasImage)
62
+ return { characterReferenceImageId: args.image };
63
+ const sourceImageKey = await uploads.uploadFile(api, 'photo', args.photo, { quiet: true });
64
+ return { sourceImageKey };
65
+ }
66
+ const idField = (what) => z.string().min(1).describe(`${what} id, as returned by other tools (numbers are fine as strings).`);
67
+ export const TOOLS = [
68
+ define({
69
+ name: 'list_characters',
70
+ title: 'List AI characters',
71
+ description: 'List ClipUGC AI characters (AI influencers). Same as `clipugc characters list`. scope "mine" (default) lists the ' +
72
+ 'authenticated user\'s own characters, "discover" the public feed, "feed" own characters first then public ones. ' +
73
+ 'Returns items with id, display_name, age, gender, is_public, status, plus pagination. Costs no credits.',
74
+ inputSchema: {
75
+ scope: z.enum(['mine', 'discover', 'feed']).optional().describe('Which list: mine (default), discover, or feed.'),
76
+ search: z.string().optional().describe('Search by name (same as --search).'),
77
+ page: z.number().int().min(1).optional().describe('Page number (same as --page).'),
78
+ per_page: z.number().int().min(1).max(characters.MAX_PER_PAGE).optional().describe('Results per page, max 50 (same as --per-page).'),
79
+ },
80
+ annotations: { readOnlyHint: true, openWorldHint: true },
81
+ handler: async (args) => {
82
+ const result = await characters.listCharacters({
83
+ scope: parseCharacterListScope(args.scope),
84
+ search: args.search,
85
+ page: args.page,
86
+ perPage: args.per_page,
87
+ });
88
+ return { items: result.items, pagination: result.pagination ?? null };
89
+ },
90
+ }),
91
+ define({
92
+ name: 'create_character',
93
+ title: 'Create an AI character',
94
+ description: 'Create a new AI character from a plain-text description. Same as `clipugc characters create`. The server extracts ' +
95
+ 'the appearance DNA and generates the first look automatically (2 credits; confirm with get_credits). Be specific: ' +
96
+ 'nationality, age, hair, eyes, face shape, skin, style, and a realism anchor such as "natural skin texture, not airbrushed". ' +
97
+ 'Characters are public by default; set private=true to opt out. make_video=true also stages the first clip (extra clip cost). ' +
98
+ 'Returns the character with first_look_id. ' + POLL_IMAGE + ' Advanced: pass name (2-120 chars) plus optional age, gender, dna_json ' +
99
+ 'instead of description for a structured create.',
100
+ inputSchema: {
101
+ description: z.string().min(characters.DESCRIPTION_MIN).max(characters.DESCRIPTION_MAX).optional()
102
+ .describe('Plain-words description of the person, 10-1000 chars (same as --description). Preferred path.'),
103
+ scene: z.string().max(characters.CREATE_SCENE_MAX).optional()
104
+ .describe('Optional scene/pose for the first look, up to 600 chars (same as --scene).'),
105
+ inspiration: z.array(z.string()).max(characters.INSPIRATION_MAX).optional()
106
+ .describe('Optional local file paths of up to 6 inspiration images (same as --inspiration).'),
107
+ private: z.boolean().optional().describe('Keep the character private (same as --private). Default: public.'),
108
+ make_video: z.boolean().optional().describe('Also stage the character\'s first video clip (same as --make-video).'),
109
+ motion_prompt: z.string().optional().describe('Motion prompt for that first clip; requires make_video (same as --motion-prompt).'),
110
+ name: z.string().optional().describe('[advanced] Full name, 2-120 chars, for the structured path without a description (same as --name).'),
111
+ age: z.number().int().min(characters.AGE_MIN).max(characters.AGE_MAX).optional().describe('[advanced] Age 18-99 (same as --age).'),
112
+ gender: z.string().optional().describe('[advanced] Gender, e.g. male, female, other (same as --gender).'),
113
+ dna_json: z.string().optional().describe('[advanced] Appearance DNA fields as an inline JSON object string or a JSON file path (same as --dna-json).'),
114
+ },
115
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
116
+ handler: async (args) => {
117
+ if (!args.description && !args.name) {
118
+ throw new CliError('Provide "description" (preferred) or the advanced "name" field.', 2);
119
+ }
120
+ const dna = args.dna_json !== undefined ? await characters.parseDnaJson(args.dna_json) : undefined;
121
+ const character = await characters.createCharacter({
122
+ description: args.description,
123
+ scene: args.scene,
124
+ inspirationFiles: args.inspiration,
125
+ name: args.name,
126
+ age: args.age,
127
+ gender: args.gender,
128
+ // Same rule as the CLI: description path is public unless private; structured path keeps the server default.
129
+ isPublic: args.description ? !args.private : args.private ? false : undefined,
130
+ dna,
131
+ makeVideo: args.make_video,
132
+ motionPrompt: args.motion_prompt,
133
+ });
134
+ const looks = Array.isArray(character.reference_images)
135
+ ? character.reference_images
136
+ : [];
137
+ const firstLookId = looks[0]?.id ?? null;
138
+ const firstClipId = character.character_video?.id ?? null;
139
+ return {
140
+ character,
141
+ first_look_id: firstLookId,
142
+ first_clip_id: firstClipId,
143
+ next: firstLookId !== null
144
+ ? `Poll list_images with character "${character.id}" until look ${firstLookId} is completed. ` +
145
+ (firstClipId !== null ? `The staged first clip is ${firstClipId}; poll it with get_video.` : 'Then create_clip with that look id.')
146
+ : `Generate a look with generate_image for character "${character.id}".`,
147
+ };
148
+ },
149
+ }),
150
+ define({
151
+ name: 'generate_image',
152
+ title: 'Generate character looks',
153
+ description: 'Generate one or more new looks (reference images) of an existing character. Same as `clipugc images generate`. ' +
154
+ 'Every look is generated from the character\'s base image, so the face stays the same person: only describe the new ' +
155
+ 'setting, outfit and light in scene, never the person again. Costs 2 credits per shot (confirm with get_credits). ' +
156
+ 'Returns the created image ids. ' + POLL_IMAGE,
157
+ inputSchema: {
158
+ character: idField('Character'),
159
+ shots: z.string().optional()
160
+ .describe(`Comma-separated shot types: ${images.SHOT_TYPES.join(', ')} (same as --shots). Default "frontal".`),
161
+ template: z.enum(images.TEMPLATES).optional()
162
+ .describe('Template (same as --template). Omit to let the server pick: scene_recreation when scene is set, else model_digitals.'),
163
+ scene: z.string().max(images.SCENE_MAX).optional().describe('Scene prompt, max 600 chars (same as --scene).'),
164
+ resolution: z.enum(images.RESOLUTIONS).optional().describe('Resolution (same as --resolution). Default 2K.'),
165
+ },
166
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
167
+ handler: async (args) => {
168
+ const result = await images.generateImages(args.character, {
169
+ shots: args.shots,
170
+ template: args.template,
171
+ scene: args.scene,
172
+ resolution: args.resolution,
173
+ });
174
+ return {
175
+ images: result.images.map((img) => ({ id: img.id, status: img.status ?? 'pending' })),
176
+ next: POLL_IMAGE,
177
+ };
178
+ },
179
+ }),
180
+ define({
181
+ name: 'list_images',
182
+ title: 'List character looks',
183
+ description: 'List the looks (reference images) of a character with id, status (pending, processing, completed, failed), scene_prompt ' +
184
+ 'and image url when ready. Same as `clipugc images list --character <id>`. Also the poll call for generate_image and ' +
185
+ 'create_character. Costs no credits.',
186
+ inputSchema: {
187
+ character: idField('Character'),
188
+ },
189
+ annotations: { readOnlyHint: true, openWorldHint: true },
190
+ handler: async (args) => {
191
+ const result = await images.listImages(args.character);
192
+ return { items: result.items };
193
+ },
194
+ }),
195
+ define({
196
+ name: 'create_clip',
197
+ title: 'Create a video clip from a look',
198
+ description: 'Animate a character look (or your own photo) into a short video clip. Same as `clipugc videos create`. ' +
199
+ 'Costs 7 credits for 5 seconds or 13 for 10 seconds; adding scene makes it a scene-staged clip (9 at 5s, 15 at 10s). ' +
200
+ 'Confirm with get_credits first. Prefer a silent reaction prompt (mouth closed, no talking, an arc in beats, ambient motion): ' +
201
+ 'lip-sync from a still image is what makes AI video look fake. Provide exactly one of image or photo. ' +
202
+ 'Returns the clip id and status. ' + POLL_CLIP,
203
+ inputSchema: {
204
+ image: z.string().optional().describe('Id of a generated character look (same as --image).'),
205
+ photo: z.string().optional().describe('Local path to your own photo, png/jpg/jpeg/webp; uploaded first (same as --photo).'),
206
+ prompt: z.string().max(videos.MAX_PROMPT_LENGTH).optional().describe('What the character does, max 1500 chars (same as --prompt).'),
207
+ scene: z.string().max(videos.MAX_SCENE_PROMPT_LENGTH).optional()
208
+ .describe('Extra scene description, max 600 chars; makes it a scene-staged clip (same as --scene).'),
209
+ duration: z.union([z.literal(5), z.literal(10)]).optional().describe('5 or 10 seconds, default 5 (same as --duration).'),
210
+ keep_sound: z.boolean().optional().describe('Keep the original sound (same as --keep-sound).'),
211
+ },
212
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
213
+ handler: async (args) => {
214
+ const api = await createApiClient();
215
+ const source = await resolveImageSource(api, args);
216
+ const video = await videos.createImageToVideo(api, {
217
+ ...source,
218
+ prompt: args.prompt,
219
+ scenePrompt: args.scene,
220
+ duration: args.duration,
221
+ keepOriginalSound: args.keep_sound,
222
+ });
223
+ return { id: video.id, status: video.status, video, next: POLL_CLIP };
224
+ },
225
+ }),
226
+ define({
227
+ name: 'create_motion_clip',
228
+ title: 'Create a motion-control clip',
229
+ description: 'Animate a character look (or your own photo) by copying the motion of a driver video. Same as `clipugc videos motion`. ' +
230
+ 'Costs 3 credits per second of driver video, rounded up, capped at 30 seconds (confirm with get_credits). ' +
231
+ 'The driver must be mp4/mov, at most 50 MB and 30 seconds; it is uploaded first. Provide exactly one of image or photo. ' +
232
+ 'Returns the clip id and status. ' + POLL_CLIP,
233
+ inputSchema: {
234
+ image: z.string().optional().describe('Id of a generated character look (same as --image).'),
235
+ photo: z.string().optional().describe('Local path to your own photo, png/jpg/jpeg/webp; uploaded first (same as --photo).'),
236
+ driver: z.string().min(1).describe('Local path of the driver video, mp4/mov, max 50 MB and 30s (same as --driver).'),
237
+ prompt: z.string().max(videos.MAX_PROMPT_LENGTH).optional().describe('What the character does, max 1500 chars (same as --prompt).'),
238
+ keep_sound: z.boolean().optional().describe('Keep the driver video\'s original sound (same as --keep-sound).'),
239
+ },
240
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
241
+ handler: async (args) => {
242
+ const api = await createApiClient();
243
+ const source = await resolveImageSource(api, args);
244
+ const referenceVideoKey = await uploads.uploadFile(api, 'driver_video', args.driver, { quiet: true });
245
+ const video = await videos.createMotionControl(api, {
246
+ ...source,
247
+ referenceVideoKey,
248
+ prompt: args.prompt,
249
+ keepOriginalSound: args.keep_sound,
250
+ });
251
+ return { id: video.id, status: video.status, video, next: POLL_CLIP };
252
+ },
253
+ }),
254
+ define({
255
+ name: 'merge_ad',
256
+ title: 'Merge a clip into a UGC ad',
257
+ description: 'Merge a completed clip with an app screen recording and a hook text overlay (plus optional background music) into the ' +
258
+ 'final UGC ad. Same as `clipugc videos merge <clipId>`. The clip must have status "completed" (check with get_video). ' +
259
+ 'Merging is free at the time of writing; the live cost is the "merge" entry of get_credits. Files are uploaded first. ' +
260
+ 'Returns merged_video_id: the AD id, which is a different id space from the clip id. ' + POLL_AD,
261
+ inputSchema: {
262
+ video: idField('Clip (character video)'),
263
+ app_video: z.string().min(1).describe('Local path of the app screen recording, mp4/mov (same as --app-video).'),
264
+ hook: z.string().min(1).max(videos.MAX_HOOK_TEXT_LENGTH).describe('Hook text overlaid on the video, max 150 chars (same as --hook).'),
265
+ music: z.string().optional().describe('Local path of background music, mp3/wav/m4a (same as --music).'),
266
+ },
267
+ annotations: { readOnlyHint: false, destructiveHint: false, openWorldHint: true },
268
+ handler: async (args) => {
269
+ const api = await createApiClient();
270
+ const appVideoKey = await uploads.uploadFile(api, 'app_video', args.app_video, { quiet: true });
271
+ const musicKey = args.music ? await uploads.uploadFile(api, 'music', args.music, { quiet: true }) : undefined;
272
+ const clip = await videos.mergeVideo(api, args.video, { appVideoKey, hookText: args.hook, musicKey });
273
+ const mergedVideoId = clip.merged_video_id == null ? null : clip.merged_video_id;
274
+ return {
275
+ merged_video_id: mergedVideoId,
276
+ clip_id: clip.id,
277
+ merge_status: clip.merge_status ?? 'pending',
278
+ clip,
279
+ next: mergedVideoId !== null
280
+ ? POLL_AD
281
+ : 'The merge was accepted but no merged_video_id came back. List the ads with `clipugc ads list` to find it.',
282
+ };
283
+ },
284
+ }),
285
+ define({
286
+ name: 'get_video',
287
+ title: 'Get clip or ad status',
288
+ description: 'Get the current status of a clip (kind "clip", default; same as `clipugc videos status <id>`) or of a merged ad ' +
289
+ '(kind "ad"; same as `clipugc ads show <adId>`). This is the poll tool for create_clip, create_motion_clip and merge_ad. ' +
290
+ 'Status is pending, processing, completed or failed. A clip record also carries merge_status and merged_video_id once merged. ' +
291
+ 'Costs no credits.',
292
+ inputSchema: {
293
+ id: idField('Clip or ad'),
294
+ kind: z.enum(['clip', 'ad']).optional().describe('"clip" (default) for a character video id, "ad" for a merged_video_id.'),
295
+ },
296
+ annotations: { readOnlyHint: true, openWorldHint: true },
297
+ handler: async (args) => {
298
+ const api = await createApiClient();
299
+ if (args.kind === 'ad') {
300
+ const ad = await ads.getMergedVideo(api, args.id);
301
+ return {
302
+ kind: 'ad',
303
+ id: ad.id,
304
+ status: ad.status,
305
+ ad,
306
+ next: ad.status === 'completed'
307
+ ? `Download it with download_video {"id": "${ad.id}", "kind": "ad"}.`
308
+ : ad.status === 'failed'
309
+ ? (ad.can_retry ? 'Re-render it with `clipugc ads retry <adId>` (free).' : 'Run merge_ad again with the app recording.')
310
+ : 'Still rendering. Poll again in 5 to 10 seconds.',
311
+ };
312
+ }
313
+ const check = await videos.checkVideoStatus(api, args.id);
314
+ return {
315
+ kind: 'clip',
316
+ id: args.id,
317
+ status: check.status,
318
+ check,
319
+ next: check.status === 'completed'
320
+ ? `Download it with download_video {"id": "${args.id}"} or merge it with merge_ad.`
321
+ : check.status === 'failed'
322
+ ? `Generation failed${check.failure_reason || check.error_message ? `: ${check.failure_reason || check.error_message}` : ''}. Retry with \`clipugc videos retry ${args.id}\`.`
323
+ : 'Still generating. Poll again in 5 to 10 seconds.',
324
+ };
325
+ },
326
+ }),
327
+ define({
328
+ name: 'download_video',
329
+ title: 'Download a clip or ad',
330
+ description: 'Download a completed clip (kind "clip", default; same as `clipugc videos download <id>`) or a completed merged ad ' +
331
+ '(kind "ad"; same as `clipugc ads download <adId>`) to a local mp4 file. Pass an absolute output path; missing parent ' +
332
+ 'directories are created. Costs no credits. Fails if the video has not completed yet.',
333
+ inputSchema: {
334
+ id: idField('Clip or ad'),
335
+ kind: z.enum(['clip', 'ad']).optional().describe('"clip" (default) for a character video id, "ad" for a merged_video_id.'),
336
+ output: z.string().optional().describe('Destination file path (same as --output). Default: clipugc-video-<id>.mp4 or clipugc-ad-<id>.mp4 in the server\'s working directory.'),
337
+ },
338
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
339
+ handler: async (args) => {
340
+ const api = await createApiClient();
341
+ const dest = args.kind === 'ad'
342
+ ? await ads.downloadMergedVideo(api, args.id, { output: args.output, quiet: true })
343
+ : await videos.downloadVideo(api, args.id, { output: args.output, quiet: true });
344
+ return { kind: args.kind ?? 'clip', id: args.id, output: path.resolve(dest) };
345
+ },
346
+ }),
347
+ define({
348
+ name: 'get_credits',
349
+ title: 'Get credit balance and costs',
350
+ description: 'Return the authenticated user\'s credit balance and the live per-action credit costs (image, clip, clip_10s, scene_staged, ' +
351
+ 'motion_per_second, merge). Same as `clipugc credits`. Call it before any generation tool so you can tell the user the ' +
352
+ 'cost and stop early when the balance is too low. Costs no credits.',
353
+ inputSchema: {},
354
+ annotations: { readOnlyHint: true, openWorldHint: true },
355
+ handler: async () => {
356
+ const api = await createApiClient();
357
+ const info = await user.getCredits(api);
358
+ return { balance: info.balance, costs: info.costs ?? {}, top_up_url: DASHBOARD_URL };
359
+ },
360
+ }),
361
+ define({
362
+ name: 'list_hooks',
363
+ title: 'Suggest hook texts',
364
+ description: 'Get AI-suggested hook texts (the short attention-grabbing line burned over a UGC ad). Same as `clipugc hooks suggest`. ' +
365
+ 'Pass context describing the app for tailored hooks. Pick one (max 150 chars) and pass it as hook to merge_ad. ' +
366
+ 'Costs no credits.',
367
+ inputSchema: {
368
+ context: z.string().optional().describe('Describe the app, e.g. "my app is a habit tracker" (same as --context).'),
369
+ },
370
+ annotations: { readOnlyHint: true, openWorldHint: true },
371
+ handler: async (args) => {
372
+ const api = await createApiClient();
373
+ const result = await hooks.suggestHooks(api, args.context);
374
+ return { hooks: result.hooks };
375
+ },
376
+ }),
377
+ ];
378
+ export function getTool(name) {
379
+ return TOOLS.find((t) => t.name === name);
380
+ }
381
+ /** Map a thrown error to the text an MCP client (and its LLM) can act on. */
382
+ export function formatToolError(error) {
383
+ if (error instanceof AuthError) {
384
+ return `${AUTH_HELP} (server said: ${error.message})`;
385
+ }
386
+ if (error instanceof InsufficientCreditsError) {
387
+ return `${error.message} Call get_credits to see the balance; credits can be bought at ${DASHBOARD_URL}.`;
388
+ }
389
+ if (error instanceof PremiumRequiredError) {
390
+ return `${error.message} This needs a paid plan; upgrade at ${DASHBOARD_URL}.`;
391
+ }
392
+ if (error instanceof CliError) {
393
+ return `${error.name}: ${error.message}`;
394
+ }
395
+ if (error instanceof Error) {
396
+ return `Error: ${error.message}`;
397
+ }
398
+ return `Error: ${String(error)}`;
399
+ }
400
+ /**
401
+ * Validate the raw arguments against the tool's schema, run it, and wrap the outcome in an
402
+ * MCP CallToolResult. Never throws: failures come back as isError results so the client can
403
+ * show them to the model.
404
+ */
405
+ export async function runTool(tool, rawArgs) {
406
+ try {
407
+ const parsed = z.object(tool.inputSchema).parse(rawArgs ?? {});
408
+ const data = await tool.handler(parsed);
409
+ return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
410
+ }
411
+ catch (error) {
412
+ if (error instanceof z.ZodError) {
413
+ const issues = error.issues.map((i) => `${i.path.join('.') || '(root)'}: ${i.message}`).join('; ');
414
+ return { isError: true, content: [{ type: 'text', text: `Invalid arguments for ${tool.name}: ${issues}` }] };
415
+ }
416
+ return { isError: true, content: [{ type: 'text', text: formatToolError(error) }] };
417
+ }
418
+ }
419
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAkB,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,UAAU,MAAM,mCAAmC,CAAC;AAChE,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,+BAA+B,CAAC;AACxD,OAAO,KAAK,GAAG,MAAM,4BAA4B,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,6BAA6B,CAAC;AACpD,OAAO,KAAK,KAAK,MAAM,8BAA8B,CAAC;AACtD,OAAO,KAAK,OAAO,MAAM,+BAA+B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEzG,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,UAAU;IACV,WAAW;IACX,gBAAgB;IAChB,aAAa;IACb,YAAY;CACJ,CAAC;AAkCX,MAAM,aAAa,GAAG,+BAA+B,CAAC;AAEtD,MAAM,SAAS,GACb,sGAAsG;IACtG,IAAI,aAAa,sFAAsF;IACvG,iGAAiG,CAAC;AAEpG,MAAM,SAAS,GACb,iHAAiH;IACjH,oEAAoE,CAAC;AAEvE,MAAM,OAAO,GACX,yHAAyH;IACzH,mFAAmF,CAAC;AAEtF,MAAM,UAAU,GACd,iHAAiH;IACjH,sFAAsF,CAAC;AAEzF,SAAS,MAAM,CAA0B,GAA0B;IACjE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,uBAAuB,CAAC,KAA+C;IAC9E,OAAO,KAAK,IAAI,MAAM,CAAC;AACzB,CAAC;AAED,iGAAiG;AACjG,KAAK,UAAU,kBAAkB,CAC/B,GAAc,EACd,IAAwC;IAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAChB,uHAAuH,EACvH,CAAC,CACF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ;QAAE,OAAO,EAAE,yBAAyB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC/D,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5F,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,gEAAgE,CAAC,CAAC;AAEtI,MAAM,CAAC,MAAM,KAAK,GAA8B;IAC9C,MAAM,CAAC;QACL,IAAI,EAAE,iBAAiB;QACvB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,mHAAmH;YACnH,kHAAkH;YAClH,yGAAyG;QAC3G,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACjH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC5E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YAClF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SACrI;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC;gBAC7C,KAAK,EAAE,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC1C,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,QAAQ;aACvB,CAAC,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QACxE,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EACT,oHAAoH;YACpH,oHAAoH;YACpH,8HAA8H;YAC9H,+HAA+H;YAC/H,4CAA4C,GAAG,UAAU,GAAG,yEAAyE;YACrI,iDAAiD;QACnD,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;iBAC/F,QAAQ,CAAC,+FAA+F,CAAC;YAC5G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE;iBAC1D,QAAQ,CAAC,4EAA4E,CAAC;YACzF,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;iBACxE,QAAQ,CAAC,kFAAkF,CAAC;YAC/F,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;YAC5G,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sEAAsE,CAAC;YACnH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;YAClI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oGAAoG,CAAC;YAC1I,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YAClI,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;YACzG,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4GAA4G,CAAC;SACvJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,QAAQ,CAAC,iEAAiE,EAAE,CAAC,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACnG,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,eAAe,CAAC;gBACjD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,gBAAgB,EAAE,IAAI,CAAC,WAAW;gBAClC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,6GAA6G;gBAC7G,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC7E,GAAG;gBACH,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,YAAY,EAAE,IAAI,CAAC,aAAa;aACjC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC;gBACrD,CAAC,CAAE,SAAS,CAAC,gBAAoD;gBACjE,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC;YACzC,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,EAAE,EAAE,IAAI,IAAI,CAAC;YAC1D,OAAO;gBACL,SAAS;gBACT,aAAa,EAAE,WAAW;gBAC1B,aAAa,EAAE,WAAW;gBAC1B,IAAI,EAAE,WAAW,KAAK,IAAI;oBACxB,CAAC,CAAC,oCAAoC,SAAS,CAAC,EAAE,gBAAgB,WAAW,iBAAiB;wBAC5F,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,4BAA4B,WAAW,2BAA2B,CAAC,CAAC,CAAC,qCAAqC,CAAC;oBACrI,CAAC,CAAC,sDAAsD,SAAS,CAAC,EAAE,IAAI;aAC3E,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,iHAAiH;YACjH,qHAAqH;YACrH,mHAAmH;YACnH,iCAAiC,GAAG,UAAU;QAChD,WAAW,EAAE;YACX,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC;YAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;iBACzB,QAAQ,CAAC,+BAA+B,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC;YAChH,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;iBAC1C,QAAQ,CAAC,sHAAsH,CAAC;YACnI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YAC7G,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;SAC7G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE;gBACzD,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CAAC;YACH,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;gBACrF,IAAI,EAAE,UAAU;aACjB,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,0HAA0H;YAC1H,sHAAsH;YACtH,qCAAqC;QACvC,WAAW,EAAE;YACX,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC;SAChC;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,iCAAiC;QACxC,WAAW,EACT,yGAAyG;YACzG,sHAAsH;YACtH,+HAA+H;YAC/H,uGAAuG;YACvG,kCAAkC,GAAG,SAAS;QAChD,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;YAC3H,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACnI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,QAAQ,EAAE;iBAC7D,QAAQ,CAAC,yFAAyF,CAAC;YACtG,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YACxH,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SAC/F;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACjD,GAAG,MAAM;gBACT,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,WAAW,EAAE,IAAI,CAAC,KAAK;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,iBAAiB,EAAE,IAAI,CAAC,UAAU;aACnC,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxE,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,oBAAoB;QAC1B,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,yHAAyH;YACzH,2GAA2G;YAC3G,yHAAyH;YACzH,kCAAkC,GAAG,SAAS;QAChD,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;YAC5F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oFAAoF,CAAC;YAC3H,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gFAAgF,CAAC;YACpH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;YACnI,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;SAC/G;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACnD,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtG,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE;gBAClD,GAAG,MAAM;gBACT,iBAAiB;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,iBAAiB,EAAE,IAAI,CAAC,UAAU;aACnC,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACxE,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,wHAAwH;YACxH,uHAAuH;YACvH,uHAAuH;YACvH,sFAAsF,GAAG,OAAO;QAClG,WAAW,EAAE;YACX,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC;YACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YAC/G,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,kEAAkE,CAAC;YACrI,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;SACxG;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;QACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9G,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtG,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC;YACjF,OAAO;gBACL,eAAe,EAAE,aAAa;gBAC9B,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,SAAS;gBAC5C,IAAI;gBACJ,IAAI,EAAE,aAAa,KAAK,IAAI;oBAC1B,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,2GAA2G;aAChH,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,kHAAkH;YAClH,0HAA0H;YAC1H,+HAA+H;YAC/H,mBAAmB;QACrB,WAAW,EAAE;YACX,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;SAC3H;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClD,OAAO;oBACL,IAAI,EAAE,IAAI;oBACV,EAAE,EAAE,EAAE,CAAC,EAAE;oBACT,MAAM,EAAE,EAAE,CAAC,MAAM;oBACjB,EAAE;oBACF,IAAI,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW;wBAC7B,CAAC,CAAC,2CAA2C,EAAE,CAAC,EAAE,mBAAmB;wBACrE,CAAC,CAAC,EAAE,CAAC,MAAM,KAAK,QAAQ;4BACtB,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,4CAA4C,CAAC;4BACxH,CAAC,CAAC,iDAAiD;iBACxD,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC1D,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK;gBACL,IAAI,EAAE,KAAK,CAAC,MAAM,KAAK,WAAW;oBAChC,CAAC,CAAC,2CAA2C,IAAI,CAAC,EAAE,+BAA+B;oBACnF,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ;wBACzB,CAAC,CAAC,oBAAoB,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,uCAAuC,IAAI,CAAC,EAAE,KAAK;wBAC9K,CAAC,CAAC,kDAAkD;aACzD,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EACT,oHAAoH;YACpH,uHAAuH;YACvH,sFAAsF;QACxF,WAAW,EAAE;YACX,EAAE,EAAE,OAAO,CAAC,YAAY,CAAC;YACzB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;YAC1H,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sIAAsI,CAAC;SAC/K;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACvG,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI;gBAC7B,CAAC,CAAC,MAAM,GAAG,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;gBACnF,CAAC,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACnF,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChF,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,8BAA8B;QACrC,WAAW,EACT,6HAA6H;YAC7H,wHAAwH;YACxH,oEAAoE;QACtE,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACxC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC;QACvF,CAAC;KACF,CAAC;IAEF,MAAM,CAAC;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,oBAAoB;QAC3B,WAAW,EACT,yHAAyH;YACzH,gHAAgH;YAChH,mBAAmB;QACrB,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yEAAyE,CAAC;SACnH;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,GAAG,GAAG,MAAM,eAAe,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;KACF,CAAC;CACH,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,OAAO,GAAG,SAAS,kBAAkB,KAAK,CAAC,OAAO,GAAG,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,YAAY,wBAAwB,EAAE,CAAC;QAC9C,OAAO,GAAG,KAAK,CAAC,OAAO,kEAAkE,aAAa,GAAG,CAAC;IAC5G,CAAC;IACD,IAAI,KAAK,YAAY,oBAAoB,EAAE,CAAC;QAC1C,OAAO,GAAG,KAAK,CAAC,OAAO,uCAAuC,aAAa,GAAG,CAAC;IACjF,CAAC;IACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,UAAU,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACnC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAoB,EAAE,OAAgB;IAClE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAC9E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QAC/G,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IACtF,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "clipugc",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Official CLI for ClipUGC — create AI characters, generate looks, and produce UGC-style videos for your mobile app from the terminal.",
5
+ "mcpName": "io.github.clipugc/clipugc",
5
6
  "type": "module",
6
7
  "bin": {
7
8
  "clipugc": "./dist/index.js"
@@ -31,10 +32,12 @@
31
32
  },
32
33
  "license": "MIT",
33
34
  "dependencies": {
35
+ "@modelcontextprotocol/sdk": "1.30.0",
34
36
  "chalk": "^5.4.1",
35
37
  "commander": "^13.1.0",
36
38
  "fs-extra": "^11.3.0",
37
- "ora": "^8.2.0"
39
+ "ora": "^8.2.0",
40
+ "zod": "4.5.4"
38
41
  },
39
42
  "devDependencies": {
40
43
  "@types/fs-extra": "^11.0.4",