@facelessad/mcp 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +5 -0
  2. package/index.js +11 -3
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -32,6 +32,11 @@ same block under `openclaw mcp` config and verify with
32
32
  | Tool | What it does |
33
33
  |------|--------------|
34
34
  | `facelessad_list_tools` | Registry: tools, styles, structures, hooks, durations |
35
+
36
+ Ask for a look of your own and the assistant sends `style: "custom"` plus
37
+ `custom_style` — `facelessad_list_tools` marks which tools accept it
38
+ (`supports.customStyle`). Product Showcase also takes `custom_graphics_style`
39
+ for the text layer drawn over the product video.
35
40
  | `facelessad_create_video` | Create an ad; returns an id immediately |
36
41
  | `facelessad_get_video` | Status + download URL when done |
37
42
  | `facelessad_list_videos` | Your videos, newest first |
package/index.js CHANGED
@@ -53,7 +53,7 @@ function result(data) {
53
53
  };
54
54
  }
55
55
 
56
- const server = new McpServer({ name: 'facelessad', version: '1.0.1' });
56
+ const server = new McpServer({ name: 'facelessad', version: '1.1.0' });
57
57
 
58
58
  server.tool(
59
59
  'facelessad_list_tools',
@@ -102,8 +102,16 @@ const createShape = {
102
102
  duration: z.number().int().optional().describe('Seconds; per-tool bounds from the registry (default 30)'),
103
103
  aspect_ratio: z.string().optional().describe('"9:16" | "1:1" | "4:5" | "16:9" (default per tool)'),
104
104
  language: z.string().optional().describe('Default "English (US)"'),
105
- style: z.string().optional().describe('Style id for the tool (registry). Omit to let the server pick'),
106
- style_hint: z.string().optional().describe('Free-form style wish when no exact style id fits'),
105
+ style: z.string().optional().describe('Style id for the tool (registry). Omit to let the server pick. Use "custom" together with custom_style to describe a look of your own — facelessad_list_tools marks which tools accept it (supports.customStyle)'),
106
+ // 1.1.0 (§673): custom_style on ainoa kentta joka oikeasti vaihtaa videon
107
+ // ilmeen. style_hint ei tehnyt sita: se lisasi vain rivin materiaaleihin,
108
+ // ja skriptin visualDirection-saanto kieltaa nimenomaan taidetyylin
109
+ // kuvaamisen. Palvelin kohtelee style_hintia nyt custom_stylena silloin kun
110
+ // style on antamatta, joten vanha kutsu alkaa vihdoin tehda mita se lupasi.
111
+ custom_style: z.string().max(2000).optional().describe('Free-text description of the look you want, max 2000 chars. Requires style:"custom". What to describe depends on the tool: animated-ad / character / music-video / inspiration / motivational / slideshow -> the illustration or cinematic image style; motion-graphics / saas-ui-ad / text-animation / video-banner -> typography, palette and motion for graphics built in code; product-showcase -> how the product is filmed (put the text-graphics look in custom_graphics_style)'),
112
+ custom_graphics_style: z.string().max(2000).optional().describe('product-showcase only: how the text graphics rendered in code OVER the product video should look (typography, colors, contrast against the video). Optional — left out, it is derived from custom_style.'),
113
+ custom_style_refine: z.boolean().optional().describe('Default true: your description is expanded into a full style specification before the video is built. Set false to use your text verbatim — do that when reusing the customStyle returned by a previous video so a campaign keeps one look.'),
114
+ style_hint: z.string().optional().describe('Legacy alias: when no style is given, this is treated exactly like custom_style. Prefer custom_style.'),
107
115
  ad_structure: z.string().optional().describe('Ad structure id for the tool (registry)'),
108
116
  hook_formula: z.string().optional().describe('Hook formula id (registry)'),
109
117
  video_mode: z.enum(['continuous', 'cuts']).optional(),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@facelessad/mcp",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "description": "FacelessAd as MCP tools — let your AI assistant create faceless video ads (Claude Desktop, Claude Code, Cursor, Windsurf, OpenClaw).",
5
5
  "license": "MIT",
6
6
  "type": "module",