lotux-mcp 0.5.0 → 0.5.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 +2 -2
- package/index.mjs +21 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# lotux-mcp
|
|
2
2
|
|
|
3
3
|
Local MCP server that lets Claude (Desktop or Code) create and edit **LOTUX**
|
|
4
|
-
concepts: fetch a brand's products / personas / angles / use-cases, create
|
|
4
|
+
concepts: fetch a brand's products / personas / angles / use-cases / offers, create
|
|
5
5
|
concepts, fill scripts, draft + link ad copy, and assign team members.
|
|
6
6
|
|
|
7
7
|
It is a thin connector — all logic and data live in the LOTUX app. This package
|
|
@@ -51,7 +51,7 @@ Restart Claude, then try: *"list my LOTUX brands"*.
|
|
|
51
51
|
| Tool | What it does |
|
|
52
52
|
|------|--------------|
|
|
53
53
|
| `list_brands` | Brands (+ agency) you can access |
|
|
54
|
-
| `list_entities` / `create_entity` / `update_entity` / `delete_entity` | A brand's products / personas / angles / use-cases |
|
|
54
|
+
| `list_entities` / `create_entity` / `update_entity` / `delete_entity` | A brand's products / personas / angles / use-cases / offers |
|
|
55
55
|
| `list_concepts` / `get_concept` | Find a concept; read its full state (fields, links, **scripts** = markdown per language + shotlist, copy) |
|
|
56
56
|
| `list_options` / `list_members` | Valid field values; assignable team members |
|
|
57
57
|
| `create_concept` | New concept in Idea (+ optional links). Returns `{ id, script_id }` — write the script with `save_script` |
|
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.5.
|
|
55
|
+
const server = new McpServer({ name: "lotux", version: "0.5.1" });
|
|
56
56
|
|
|
57
57
|
// ── Reads ─────────────────────────────────────────────────────────────────────
|
|
58
58
|
|
|
@@ -65,7 +65,7 @@ server.tool(
|
|
|
65
65
|
|
|
66
66
|
server.tool(
|
|
67
67
|
"list_entities",
|
|
68
|
-
"List a brand's products, personas, angles,
|
|
68
|
+
"List a brand's products, personas, angles, use-cases and offers (the building blocks for a concept). Pass account_id from list_brands.",
|
|
69
69
|
{ account_id: z.string().describe("Brand (or agency) id from list_brands") },
|
|
70
70
|
async ({ account_id }) => ok(await rpc("list_entities", { account_id }))
|
|
71
71
|
);
|
|
@@ -257,6 +257,23 @@ server.tool(
|
|
|
257
257
|
async (args) => ok(await rpc("set_base_language", args))
|
|
258
258
|
);
|
|
259
259
|
|
|
260
|
+
server.tool(
|
|
261
|
+
"create_copy",
|
|
262
|
+
"Create a brand-scoped ad copy item (adcopy / headline / description) and link it to a concept. Returns the new copy id. To add another language to an existing copy use add_copy_translation instead.",
|
|
263
|
+
{
|
|
264
|
+
account_id: z.string().describe("Brand id from list_brands"),
|
|
265
|
+
concept_id: z.string(),
|
|
266
|
+
type: z.enum(["adcopy", "headline", "description"]),
|
|
267
|
+
text: z.string(),
|
|
268
|
+
product_ids: z.array(z.string()).optional(),
|
|
269
|
+
promotion: z.string().optional(),
|
|
270
|
+
country: z.string().optional(),
|
|
271
|
+
language: z.string().optional().describe("Full-written name, e.g. English"),
|
|
272
|
+
funnel_stage: z.string().optional(),
|
|
273
|
+
},
|
|
274
|
+
async (args) => ok(await rpc("create_copy", args))
|
|
275
|
+
);
|
|
276
|
+
|
|
260
277
|
server.tool(
|
|
261
278
|
"link_copy",
|
|
262
279
|
"Link an existing copy item to a concept.",
|
|
@@ -283,11 +300,11 @@ server.tool(
|
|
|
283
300
|
async (args) => ok(await rpc("add_copy_translation", args))
|
|
284
301
|
);
|
|
285
302
|
|
|
286
|
-
// ── Brand-DB entities (products / personas / angles / use-cases)
|
|
303
|
+
// ── Brand-DB entities (products / personas / angles / use-cases / offers) ──────
|
|
287
304
|
|
|
288
305
|
server.tool(
|
|
289
306
|
"create_entity",
|
|
290
|
-
"Create a NEW brand-DB entity — a product, persona, use_case or
|
|
307
|
+
"Create a NEW brand-DB entity — a product, persona, use_case, angle or offer 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); offers take offer_type / value / starts_on / ends_on / landing_page_id / hypothesis / conclusion / status. Omit unknown fields. Personas/use_cases/angles/offers get an auto id_code (p1/u1/a1/o1), returned in the result. Link the new entity to a concept afterwards with set_concept_fields.",
|
|
291
308
|
{
|
|
292
309
|
account_id: z.string().describe("Brand id from list_brands"),
|
|
293
310
|
kind: z.enum(["products", "personas", "angles", "use_cases", "offers"]),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lotux-mcp",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.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": {
|