@omnicensus/mcp-server 0.3.2 → 0.3.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.
- package/dist/index.js +21 -0
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -156,6 +156,9 @@ const ChannelInsights = z.object({
|
|
|
156
156
|
});
|
|
157
157
|
const CompetitorTeardown = z.object({ competitor_job_id: z.string() });
|
|
158
158
|
const ApplyEdits = z.object({ job_id: z.string() });
|
|
159
|
+
const GeneratePostCopy = z.object({ job_id: z.string(), platform: z.enum(['youtube', 'youtube_shorts', 'tiktok', 'instagram_reels', 'x']).optional() });
|
|
160
|
+
const NextVideoIdeas = z.object({});
|
|
161
|
+
const DubClip = z.object({ job_id: z.string(), clip_index: z.number().int().min(0), language: z.enum(['es', 'pt', 'hi', 'fr', 'de', 'it', 'ja', 'ko', 'ar']) });
|
|
159
162
|
const ShareBrainMap = z.object({ job_id: z.string() });
|
|
160
163
|
const FundOrgPool = z.object({ org_id: z.string(), credits: z.number().int().min(5).max(5000) });
|
|
161
164
|
const SetAccountProfile = z.object({ account_type: z.enum(['individual', 'business']), company_name: z.string().optional(), company_size: z.string().optional(), website: z.string().optional(), vat_id: z.string().optional(), use_case: z.string().optional(), country: z.string().optional() });
|
|
@@ -211,6 +214,12 @@ const TOOLS = [
|
|
|
211
214
|
desc: "Diff an analysed competitor video against YOUR channel averages (analyze_video the competitor's URL first, then pass its job_id). Returns {teardown:{headline,they_win[],you_win[],parity[],competitor_score,your_avg_score}} — what they do better, where you lead, and parity. Only compares dimensions both sides have. Free. Honest enough=false with no own history." },
|
|
212
215
|
{ name: "apply_edits", schema: ApplyEdits,
|
|
213
216
|
desc: "Render a downloadable edited cut of an analysed job by removing its 'cut' edit_suggestions (dead zones / low-energy spans). Free. Returns {status, job_id}; poll get_job_status for edited_cut{url, original_duration, edited_duration, removed_seconds, cuts_applied[]}." },
|
|
217
|
+
{ name: "generate_post_copy", schema: GeneratePostCopy,
|
|
218
|
+
desc: "Write the post AROUND an analysed video: 3 caption variants + hashtags + a platform-tuned description, grounded ONLY in the real transcript/summary (no invented stats). platform: youtube|youtube_shorts|tiktok|instagram_reels|x. 1 credit (refunded on failure). Returns {captions[3], hashtags, description, disclaimer}." },
|
|
219
|
+
{ name: "next_video_ideas", schema: NextVideoIdeas,
|
|
220
|
+
desc: "Plan the NEXT video from the key owner's OWN library: best length, recurring weakness, top genre + 3 LLM concept angles grounded in their top transcripts (not market data). 1 credit, cached per ISO-week (cache hit = free). Honest enough=false under 3 analysed videos. Returns {ideas[3], best_length, recurring_weakness, top_genre}." },
|
|
221
|
+
{ name: "dub_clip", schema: DubClip,
|
|
222
|
+
desc: "AI-dub one clip of a clip job into another language (es|pt|hi|fr|de|it|ja|ko|ar). Translates the transcript, synthesises a neural voice, ducks the original bed, burns target-language captions. 3 credits/min of clip (refunded on dispatch failure). Returns {status}; poll get_job_status for dubs[\"{clip_index}_{language}\"].url. Output is an AI-dubbed (synthetic) voice — disclose where required." },
|
|
214
223
|
{ name: "share_brain_map", schema: ShareBrainMap,
|
|
215
224
|
desc: "Make a job's predicted brain-reaction map public on a token-gated /brain/{token} page (honest 'predicted, not a scan' label). Job must have a brain_simulation_url. Free. Returns {share_url, token}." },
|
|
216
225
|
{ name: "set_account_profile", schema: SetAccountProfile,
|
|
@@ -324,6 +333,18 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
324
333
|
const p = ApplyEdits.parse(args);
|
|
325
334
|
return toolResult(await call("/applyEditsHttp", { method: "POST", body: JSON.stringify(p) }));
|
|
326
335
|
}
|
|
336
|
+
case "generate_post_copy": {
|
|
337
|
+
const p = GeneratePostCopy.parse(args);
|
|
338
|
+
return toolResult(await call("/generatePostCopyHttp", { method: "POST", body: JSON.stringify(p) }));
|
|
339
|
+
}
|
|
340
|
+
case "next_video_ideas": {
|
|
341
|
+
NextVideoIdeas.parse(args);
|
|
342
|
+
return toolResult(await call("/getNextVideoIdeasHttp", { method: "POST", body: "{}" }));
|
|
343
|
+
}
|
|
344
|
+
case "dub_clip": {
|
|
345
|
+
const p = DubClip.parse(args);
|
|
346
|
+
return toolResult(await call("/dubClipHttp", { method: "POST", body: JSON.stringify(p) }));
|
|
347
|
+
}
|
|
327
348
|
case "share_brain_map": {
|
|
328
349
|
const p = ShareBrainMap.parse(args);
|
|
329
350
|
return toolResult(await call("/shareBrainMapHttp", { method: "POST", body: JSON.stringify(p) }));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omnicensus/mcp-server",
|
|
3
|
-
"version": "0.3.
|
|
4
|
-
"description": "MCP server for Omnicensus
|
|
3
|
+
"version": "0.3.3",
|
|
4
|
+
"description": "MCP server for Omnicensus \u2014 let Claude, Cursor, Windsurf, and any MCP-compatible AI agent score, analyze, share, export, and bill on the Omnicensus video-engagement platform.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://omnicensus.video",
|
|
7
7
|
"bin": {
|