@facelessad/mcp 1.0.0 → 1.0.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/README.md +9 -0
- package/index.js +23 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,3 +41,12 @@ same block under `openclaw mcp` config and verify with
|
|
|
41
41
|
|
|
42
42
|
Videos build in the background (3–10 min); the assistant polls
|
|
43
43
|
`facelessad_get_video`. You are only charged for steps that succeed.
|
|
44
|
+
|
|
45
|
+
## 1.0.1
|
|
46
|
+
|
|
47
|
+
Seven tool-specific fields were reachable through the HTTP API but missing
|
|
48
|
+
from this package's schema, and the MCP SDK strips unknown keys — so an
|
|
49
|
+
assistant could not use them at all: `product_image_urls` (extra product
|
|
50
|
+
angles) and, for Video Banner, `texts`, `text_mode`, `background_image_url`,
|
|
51
|
+
`badge_image_url`, `badge` and `photo_query`. The schema now mirrors the
|
|
52
|
+
hosted connector at `/mcp` field for field.
|
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.
|
|
56
|
+
const server = new McpServer({ name: 'facelessad', version: '1.0.1' });
|
|
57
57
|
|
|
58
58
|
server.tool(
|
|
59
59
|
'facelessad_list_tools',
|
|
@@ -69,6 +69,13 @@ server.tool(
|
|
|
69
69
|
async () => result(await api('GET', '/api/v1/balance'))
|
|
70
70
|
);
|
|
71
71
|
|
|
72
|
+
server.tool(
|
|
73
|
+
'facelessad_list_brand_kits',
|
|
74
|
+
'The brands on this account: id, name, whether it is the default, how many of the 32 brand questions are answered, and whether it carries a colour and a logo. Call this before naming brand_kit_id — ids are per account and cannot be guessed.',
|
|
75
|
+
{},
|
|
76
|
+
async () => result(await api('GET', '/api/v1/brand-kits'))
|
|
77
|
+
);
|
|
78
|
+
|
|
72
79
|
server.tool(
|
|
73
80
|
'facelessad_voices',
|
|
74
81
|
'The curated voice-over pool (id, name, gender, accent, language). Only these ids are accepted as a specific voice.',
|
|
@@ -112,9 +119,24 @@ const createShape = {
|
|
|
112
119
|
sfx: z.boolean().optional(),
|
|
113
120
|
captions: z.boolean().optional(),
|
|
114
121
|
use_brand_kit: z.boolean().optional().describe('Default true'),
|
|
122
|
+
brand_kit_id: z.number().int().optional().describe('§640: which brand to use. Omit for the account default. Ids come from facelessad_list_brand_kits.'),
|
|
115
123
|
use_winners: z.boolean().optional().describe('Default true'),
|
|
116
124
|
name: z.string().optional().describe('Display name in My Files'),
|
|
117
125
|
product_image_url: z.string().optional().describe('REQUIRED for product-showcase: public https URL of the product photo'),
|
|
126
|
+
// 1.0.1 (§639): nämä API on hyväksynyt alusta asti, mutta ne puuttuivat
|
|
127
|
+
// tästä skeemasta — ja koska SDK riisuu tuntemattomat avaimet, avustin ei
|
|
128
|
+
// voinut käyttää niitä lainkaan. Peilaa McpController::toolList():ia 1:1.
|
|
129
|
+
product_image_urls: z.array(z.string()).optional().describe('product-showcase only: up to 8 extra angle photos of the same product (https URLs). Helps the product keep its shape and label across clips.'),
|
|
130
|
+
texts: z.object({
|
|
131
|
+
headline: z.string().optional().describe('Max 80 characters'),
|
|
132
|
+
subline: z.string().optional().describe('Max 120 characters'),
|
|
133
|
+
cta_text: z.string().optional().describe('Max 30 characters'),
|
|
134
|
+
}).optional().describe('video-banner only: your own copy. Anything you leave out is written for you from the materials.'),
|
|
135
|
+
text_mode: z.enum(['simple', 'full']).optional().describe('video-banner only. "full" = your texts are used as-is and no AI writes copy (requires texts.headline). "simple" = all three are written for you (send no texts). Omit to have only the missing ones filled in.'),
|
|
136
|
+
background_image_url: z.string().optional().describe('video-banner only: https URL to use instead of the automatic photo pick'),
|
|
137
|
+
badge_image_url: z.string().optional().describe('video-banner only: https URL of a badge image. Wins over badge.'),
|
|
138
|
+
badge: z.enum(['none', 'random_face']).optional().describe('video-banner only: "random_face" picks the same AI face the app offers. Ignored when badge_image_url is set.'),
|
|
139
|
+
photo_query: z.string().optional().describe('video-banner only: steer the automatic background photo search, e.g. "nordic office"'),
|
|
118
140
|
};
|
|
119
141
|
|
|
120
142
|
server.tool(
|
package/package.json
CHANGED