lotux-mcp 0.10.0 → 0.10.2
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 +1 -1
- package/index.mjs +9 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -64,7 +64,7 @@ Restart Claude, then try: *"list my LOTUX brands"*.
|
|
|
64
64
|
| `iterate_concept` | Spawn a variation ({root}_Var{n}), the same as the app's Iterate button |
|
|
65
65
|
| `list_kb_*` / `get_kb_doc` / `create_kb_doc` / `update_kb_doc` | Kennisbank pages |
|
|
66
66
|
| `content_options` / `create_flywheel` / `update_flywheel` / `list_flywheels` / `get_flywheel` | Content flywheels (Marketing → Content, agency-only): one long-form video. Start with `content_options`; give flywheels a `key` so re-runs reuse them |
|
|
67
|
-
| `push_assets` / `add_asset` / `get_asset` / `list_assets` / `update_asset` / `set_asset_status` / `add_comment` / `delete_asset` | Content assets, upserted on their `key`. Statuses: scripting → production → post_production → to_review → revisions → approved → live. Content you write lands in `to_review`; Claude can't set revisions, approve or mark live; deleting signed-off work needs `force`. Each asset carries `raw_footage_url` (raw files folder) and `final_asset_url` (the export — a change sends it to review), plus its content ID (`code`) and `name` = `"<code> - <title>"`; pass `code` instead of `asset_id` anywhere |
|
|
67
|
+
| `push_assets` / `add_asset` / `get_asset` / `list_assets` / `update_asset` / `set_asset_status` / `add_comment` / `delete_asset` | Content assets, upserted on their `key`. Statuses: scripting → production → ready_for_post → post_production → to_review → revisions → approved → live. Content you write lands in `to_review`; Claude can't set revisions, approve or mark live; deleting signed-off work needs `force`. Each asset carries `raw_footage_url` (raw files folder) and `final_asset_url` (the export — a change sends it to review), plus its content ID (`code`) and `name` = `"<code> - <title>"`; pass `code` instead of `asset_id` anywhere |
|
|
68
68
|
| `get_setup_checks` / `set_setup_check` | A flywheel's setup checklist (Instagram auto-replies, setter replies, reel covers, YouTube, Klaviyo flow) — tick a step by `check_key` after doing it |
|
|
69
69
|
|
|
70
70
|
Beats (`add_beat`, `update_beat`, `delete_beat`, `set_beat_translation`, `add_language`) were
|
package/index.mjs
CHANGED
|
@@ -52,7 +52,7 @@ const ok = (result) => ({
|
|
|
52
52
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
53
53
|
});
|
|
54
54
|
|
|
55
|
-
const server = new McpServer({ name: "lotux", version: "0.10.
|
|
55
|
+
const server = new McpServer({ name: "lotux", version: "0.10.2" });
|
|
56
56
|
|
|
57
57
|
// ── Reads ─────────────────────────────────────────────────────────────────────
|
|
58
58
|
|
|
@@ -464,10 +464,10 @@ server.tool(
|
|
|
464
464
|
// (defaults to your agency). Call content_options first for the allowed values.
|
|
465
465
|
|
|
466
466
|
const PLATFORMS = ["youtube", "youtube_shorts", "instagram", "tiktok", "linkedin", "x", "email", "meta_ads", "opt_in_page", "google_doc", "internal"];
|
|
467
|
-
// Statuses follow production. You may set the first
|
|
467
|
+
// Statuses follow production. You may set the first five; revisions,
|
|
468
468
|
// approved and live are a human's call.
|
|
469
|
-
const STATUSES = ["scripting", "production", "post_production", "to_review", "revisions", "approved", "live"];
|
|
470
|
-
const CLAUDE_STATUSES = ["scripting", "production", "post_production", "to_review"];
|
|
469
|
+
const STATUSES = ["scripting", "production", "ready_for_post", "post_production", "to_review", "revisions", "approved", "live"];
|
|
470
|
+
const CLAUDE_STATUSES = ["scripting", "production", "ready_for_post", "post_production", "to_review"];
|
|
471
471
|
// video = "To long form".
|
|
472
472
|
const CTAS = ["none", "video", "lead_magnet", "dm_keyword", "booking", "follow"];
|
|
473
473
|
// long_form carries the YouTube pieces: title = YouTube title, body =
|
|
@@ -551,8 +551,8 @@ server.tool(
|
|
|
551
551
|
transcript: z.string().optional(),
|
|
552
552
|
notes: z.string().optional(),
|
|
553
553
|
new_key: z.string().optional().describe("Give the flywheel a (new) key"),
|
|
554
|
-
klaviyo_flow_id: z.string().optional().describe("The Klaviyo flow built for this video (LM · <key
|
|
555
|
-
klaviyo_campaign_id: z.string().optional().describe("The Klaviyo
|
|
554
|
+
klaviyo_flow_id: z.string().optional().describe("The Klaviyo flow built for this video (LM · <key>, 4 emails for sign-ups); its setup check ticks once the flow is live"),
|
|
555
|
+
klaviyo_campaign_id: z.string().optional().describe("The Klaviyo announcement campaign (one \"new video\" email to the list); its setup check ticks once it is scheduled"),
|
|
556
556
|
account_id: z.string().optional(),
|
|
557
557
|
},
|
|
558
558
|
async (args) => ok(await rpc("update_flywheel", args))
|
|
@@ -649,7 +649,7 @@ server.tool(
|
|
|
649
649
|
|
|
650
650
|
server.tool(
|
|
651
651
|
"set_asset_status",
|
|
652
|
-
"Move an asset through scripting, production, post_production or to_review (to_review hands it to a human). Revisions, approved and live are a human's call in LOTUX.",
|
|
652
|
+
"Move an asset through scripting, production, ready_for_post, post_production or to_review (to_review hands it to a human). Revisions, approved and live are a human's call in LOTUX.",
|
|
653
653
|
{
|
|
654
654
|
...assetRef,
|
|
655
655
|
status: z.enum(CLAUDE_STATUSES),
|
|
@@ -675,14 +675,14 @@ server.tool(
|
|
|
675
675
|
|
|
676
676
|
server.tool(
|
|
677
677
|
"get_setup_checks",
|
|
678
|
-
"A flywheel's setup checklist: the steps outside LOTUX (Instagram auto-reply per lead-magnet DM keyword,
|
|
678
|
+
"A flywheel's setup checklist: the steps outside LOTUX (Instagram auto-reply per lead-magnet DM keyword, reel covers, YouTube scheduling, the Klaviyo flow + keep-warm campaign). Each with check_key, status (open / done / n_a), due date, owner, and whether LOTUX ticks it itself (auto).",
|
|
679
679
|
{ ...flywheelRef, account_id: z.string().optional() },
|
|
680
680
|
async (args) => ok(await rpc("get_setup_checks", args))
|
|
681
681
|
);
|
|
682
682
|
|
|
683
683
|
server.tool(
|
|
684
684
|
"set_setup_check",
|
|
685
|
-
"Tick a setup step after you did it (e.g. check_key \"dm-keyword:EXIT\" once the Instagram auto-reply is set up AND tested). status done / open / n_a, plus an optional note. Auto checks (klaviyo
|
|
685
|
+
"Tick a setup step after you did it (e.g. check_key \"dm-keyword:EXIT\" once the Instagram auto-reply is set up AND tested). status done / open / n_a, plus an optional note. Auto checks (klaviyo-*, lead-magnet-page) tick themselves. Logged as done by Claude.",
|
|
686
686
|
{
|
|
687
687
|
...flywheelRef,
|
|
688
688
|
check_key: z.string().describe('From get_setup_checks, e.g. "dm-keyword:EXIT", "reel-covers", "youtube"'),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotux-mcp",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local MCP server that lets Claude create LOTUX concepts (fetch brand-DB entities, create concepts, fill scripts + copy). Talks to the LOTUX app with a personal token; no business logic or secrets live here.",
|
|
6
6
|
"bin": {
|