lotux-mcp 0.3.0 → 0.4.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/index.mjs +15 -3
- package/package.json +1 -1
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.
|
|
55
|
+
const server = new McpServer({ name: "lotux", version: "0.4.0" });
|
|
56
56
|
|
|
57
57
|
// ── Reads ─────────────────────────────────────────────────────────────────────
|
|
58
58
|
|
|
@@ -308,11 +308,23 @@ server.tool(
|
|
|
308
308
|
async (args) => ok(await rpc("unlink_copy", args))
|
|
309
309
|
);
|
|
310
310
|
|
|
311
|
+
server.tool(
|
|
312
|
+
"add_copy_translation",
|
|
313
|
+
"Add a language variant to an existing copy ('primary text') so it reads as one copy with a language switcher in the app. Clones the base copy's products/promotion/country/funnel with a new language + text and groups them (translation_group_id). base_copy_id comes from list_copy or get_concept; language is a full-written name (e.g. Dutch). Optionally pass concept_id to also link the new variant to that concept. Returns the new copy id.",
|
|
314
|
+
{
|
|
315
|
+
base_copy_id: z.string().describe("The existing copy to add a translation to"),
|
|
316
|
+
language: z.string().describe("Full-written name, e.g. Dutch"),
|
|
317
|
+
text: z.string().describe("The translated copy text"),
|
|
318
|
+
concept_id: z.string().optional().describe("Optional — also link the new variant to this concept"),
|
|
319
|
+
},
|
|
320
|
+
async (args) => ok(await rpc("add_copy_translation", args))
|
|
321
|
+
);
|
|
322
|
+
|
|
311
323
|
// ── Brand-DB entities (products / personas / angles / use-cases) ────────────────
|
|
312
324
|
|
|
313
325
|
server.tool(
|
|
314
326
|
"create_entity",
|
|
315
|
-
"Create a brand-DB entity
|
|
327
|
+
"Create a NEW brand-DB entity — a product, persona, use_case or angle that doesn't exist yet (to attach an EXISTING one to a concept, pass its id to set_concept_fields instead). name is required; description optional. `extras` carries the typed fields: products take average_price / margin_pct / cm_target (target contribution-margin %) / ltv_multiplier / be_ncroas / product_link / type / status; personas take awareness_stage / hypothesis; angles take belief_shift (core idea goes in description). Omit unknown fields. Personas/use_cases/angles get an auto id_code (p1/u1/a1), returned in the result. Link the new entity to a concept afterwards with set_concept_fields.",
|
|
316
328
|
{
|
|
317
329
|
account_id: z.string().describe("Brand id from list_brands"),
|
|
318
330
|
kind: z.enum(["products", "personas", "angles", "use_cases"]),
|
|
@@ -338,7 +350,7 @@ server.tool(
|
|
|
338
350
|
|
|
339
351
|
server.tool(
|
|
340
352
|
"delete_entity",
|
|
341
|
-
"Delete a brand-DB entity by id. Its links to concepts are removed with it. Irreversible — confirm via list_entities first.",
|
|
353
|
+
"Delete a brand-DB entity (product / persona / use_case / angle) by id. Its links to concepts are removed with it. Irreversible — confirm the id via list_entities first.",
|
|
342
354
|
{
|
|
343
355
|
entity_id: z.string(),
|
|
344
356
|
kind: z.enum(["products", "personas", "angles", "use_cases"]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotux-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.1",
|
|
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": {
|