lotux-mcp 0.27.0 → 0.29.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 +1 -0
- package/package.json +1 -1
- package/tools.mjs +19 -2
package/README.md
CHANGED
|
@@ -58,6 +58,7 @@ Restart Claude, then try: *"list my LOTUX brands"*.
|
|
|
58
58
|
| `set_concept_fields` | Update fields / links / team roles |
|
|
59
59
|
| `save_script` | Write a script: markdown body for one language (`- **Hook:** …`, `- **1:** …`, `- **CTA:** …`), the shotlist, a rename. Pass `language` for a translation |
|
|
60
60
|
| `add_script` / `delete_script` / `remove_script_language` / `set_base_language` | More scripts per concept; language housekeeping |
|
|
61
|
+
| `add_reference` / `delete_reference` | Reference video by link (TikTok / Reels / Shorts); LOTUX saves a copy + Dropbox `00_Reference`. Listed in `get_concept` → `references` |
|
|
61
62
|
| `set_beats` / `set_beat_translations` | **Compatibility** for older prompts: a beat list is stored as the script document. Prefer `save_script` |
|
|
62
63
|
| `list_copy` / `create_copy` / `update_copy` / `delete_copy` / `link_copy` / `unlink_copy` / `add_copy_translation` | Ad copy library + concept links. `update_copy` edits in place; `delete_copy` removes it everywhere (status stays app-only) |
|
|
63
64
|
| `list_landing_pages` / `create_landing_page` | A brand's landing pages + the agency pool; link them with `set_concept_fields` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotux-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.29.0",
|
|
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": {
|
package/tools.mjs
CHANGED
|
@@ -75,7 +75,7 @@ export function registerTools(server, rpc) {
|
|
|
75
75
|
|
|
76
76
|
server.tool(
|
|
77
77
|
"plan_items",
|
|
78
|
-
"Plan 1–60 items on ONE person's calendar
|
|
78
|
+
"Plan 1–60 items on ONE person's calendar from a date. Concepts (post) without start_time go into that person's day blocks, in the blocks the planner baseline keeps for the concept's client (the client's goal for the week, max clients a day, block changes, meetings and planned work respected), starting on the date and continuing on the next working days up to the planning horizon. Concepts that don't fit (goal covered, person not on the client's team, not ready, someone else's) stay in the Unplanned Log and come back in not_planned with the reason: tell the user. With start_time they run back to back from that time instead, each as long as that person's HR output allows (40 h ÷ weekly output; tasks 1 h); all_day: true = all-day. go_live and tasks without start_time land all-day. The person becomes the maker (post: video editor on video concepts, static designer on statics) or media buyer (go_live); on a task they are added to the assignees. Planning concept blocks needs Creative edit rights. More than 10 items → returns a PREVIEW only and changes nothing: show the list, ask for a yes, then call apply_planning_preview. Never deletes anything.",
|
|
79
79
|
{
|
|
80
80
|
person: z.string().describe("id, name or 'me'"),
|
|
81
81
|
items: PLAN_ITEMS,
|
|
@@ -348,7 +348,7 @@ export function registerTools(server, rpc) {
|
|
|
348
348
|
|
|
349
349
|
server.tool(
|
|
350
350
|
"get_concept",
|
|
351
|
-
"Read the full state of one concept by id: fields, linked products/personas/angles/use-cases, scripts (markdown per language + shotlist), and linked copy. Use to confirm what was written.",
|
|
351
|
+
"Read the full state of one concept by id: fields, linked products/personas/angles/use-cases, references (the videos it is based on), scripts (markdown per language + shotlist), and linked copy. Use to confirm what was written.",
|
|
352
352
|
{ concept_id: z.string() },
|
|
353
353
|
async ({ concept_id }) => ok(await rpc("get_concept", { concept_id }))
|
|
354
354
|
);
|
|
@@ -476,6 +476,23 @@ export function registerTools(server, rpc) {
|
|
|
476
476
|
async (args) => ok(await rpc("save_script", args))
|
|
477
477
|
);
|
|
478
478
|
|
|
479
|
+
server.tool(
|
|
480
|
+
"add_reference",
|
|
481
|
+
"Add a reference (the video a concept is based on) by link: TikTok, Instagram Reels, Facebook Reels or YouTube Shorts (any other link is kept as a plain link). For TikTok / Instagram / Facebook LOTUX saves its own copy (usually under a minute) and puts it in the concept's Dropbox folder under 00_Reference. The first reference is the main one. Video FILES can't be sent here — upload those in the app.",
|
|
482
|
+
{
|
|
483
|
+
concept_id: z.string(),
|
|
484
|
+
url: z.string().describe("Full link to the video, e.g. https://www.instagram.com/reel/ABC123/"),
|
|
485
|
+
},
|
|
486
|
+
async (args) => ok(await rpc("add_reference", args))
|
|
487
|
+
);
|
|
488
|
+
|
|
489
|
+
server.tool(
|
|
490
|
+
"delete_reference",
|
|
491
|
+
"Remove a reference from its concept (id from get_concept → references). Also deletes LOTUX's saved copy and the file in the concept's Dropbox 00_Reference folder. Irreversible in LOTUX (Dropbox keeps deleted files in its trash for 30 days).",
|
|
492
|
+
{ reference_id: z.string() },
|
|
493
|
+
async ({ reference_id }) => ok(await rpc("delete_reference", { reference_id }))
|
|
494
|
+
);
|
|
495
|
+
|
|
479
496
|
server.tool(
|
|
480
497
|
"add_script",
|
|
481
498
|
"Add another script to a concept (every concept already has one — use save_script on it first). Returns the new script (starter template in the base language).",
|