@solumflow-app/crm-mcp-server 0.4.0 → 0.6.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 +36 -2
- package/dist/index.js +869 -222
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -33,6 +33,18 @@ Any other MCP client takes the same command and the same two variables:
|
|
|
33
33
|
|
|
34
34
|
The server speaks over stdio. Errors go to stderr.
|
|
35
35
|
|
|
36
|
+
## Skills
|
|
37
|
+
|
|
38
|
+
The skills that walk an agent through connecting a website (a menu with
|
|
39
|
+
contact form, booking, chat, tracking and cookie banner) are published
|
|
40
|
+
separately:
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
npx skills add ascensie/solumflow-skills
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
See [`ascensie/solumflow-skills`](https://github.com/ascensie/solumflow-skills).
|
|
47
|
+
|
|
36
48
|
## Tools
|
|
37
49
|
|
|
38
50
|
What a key may do is decided by its scopes, on the API's side. A tool whose
|
|
@@ -40,6 +52,7 @@ scope the key lacks answers `forbidden` and names the scope it needs.
|
|
|
40
52
|
|
|
41
53
|
| Tool | Scope | What it does |
|
|
42
54
|
| --- | --- | --- |
|
|
55
|
+
| `server_info` | none | The version of this server and of its client, the API address, and the fingerprint of the tool definitions it serves. |
|
|
43
56
|
| `list_forms` | `website:manage` | Published forms, with their link and embed snippet. |
|
|
44
57
|
| `list_booking_pages` | `website:manage` | Every page a visitor can book on, with its embed snippet. |
|
|
45
58
|
| `list_chat_widgets` | `website:manage` | Chat widgets, the sites each may run on, and the script tag. |
|
|
@@ -48,10 +61,10 @@ scope the key lacks answers `forbidden` and names the scope it needs.
|
|
|
48
61
|
| `update_site_tracking` | `website:manage` | Add or remove those domains. |
|
|
49
62
|
| `list_catalogs` | `catalog:read` | The product catalogues the key can write to, and their slugs. |
|
|
50
63
|
| `list_catalog_fields` | `catalog:read` | The public custom fields of a catalogue, including how each content block is built. |
|
|
51
|
-
| `list_products` | `catalog:read` | One page of published products, by category or catalogue. |
|
|
64
|
+
| `list_products` | `catalog:read` | One page of published products, by category or catalogue. With `status` (`draft`, `archived`, `all`) and a key that has `catalog:write`, the concepts and archived ones too. |
|
|
52
65
|
| `get_product` | `catalog:read` | One product as its page needs it. |
|
|
53
66
|
| `get_product_availability` | `catalog:read` | Whether a product can be bought now, live. |
|
|
54
|
-
| `list_categories` | `catalog:read` | The category tree, with product counts. |
|
|
67
|
+
| `list_categories` | `catalog:read` | The category tree, with product counts. `status` `draft` or `all` (with `catalog:write`) adds the concept categories. |
|
|
55
68
|
| `get_category` | `catalog:read` | One category page and a page of its products. |
|
|
56
69
|
| `read_configurator` | `catalog:read` | A product's 3D configurator document. |
|
|
57
70
|
| `check_configurator_shape` | none | Check a configurator structure or shape the way the app does, without saving it. |
|
|
@@ -69,6 +82,21 @@ scope the key lacks answers `forbidden` and names the scope it needs.
|
|
|
69
82
|
Every catalogue tool takes an optional `object`: the slug of another catalogue
|
|
70
83
|
of the account (from `list_catalogs`). Left out, it is the account's own.
|
|
71
84
|
|
|
85
|
+
## After an update
|
|
86
|
+
|
|
87
|
+
An agent keeps the tool definitions it was handed when its session began, and a
|
|
88
|
+
session that outlives an update of this server talks to the new server with the
|
|
89
|
+
old definitions. The server cannot make the agent reload. What it does:
|
|
90
|
+
|
|
91
|
+
- `server_info` says which version is running and carries
|
|
92
|
+
`definitionsVersion`, a fingerprint of every tool definition it serves.
|
|
93
|
+
- Each write tool names that fingerprint in its description and takes it back
|
|
94
|
+
as `schemaHash`. When the two differ, the call is still carried out and the
|
|
95
|
+
answer adds a note that the definitions are older than the server.
|
|
96
|
+
- It announces a changed tool list to clients that listen for it. Claude Code
|
|
97
|
+
does not always: **restart the session** (in Claude Code `/mcp` and
|
|
98
|
+
reconnect, or start a new session) after you update the package.
|
|
99
|
+
|
|
72
100
|
## Writing the catalogue
|
|
73
101
|
|
|
74
102
|
The write tools change a customer's live catalogue, so it helps to know what the
|
|
@@ -84,6 +112,12 @@ API does with them:
|
|
|
84
112
|
- **Typos do not become data.** A category or a select choice that does not
|
|
85
113
|
exist is refused, unless `createMissingCategories` or `addMissingOptions` asks
|
|
86
114
|
for it.
|
|
115
|
+
- **A repeater's items may leave out `id`.** SolumFlow makes one, and the
|
|
116
|
+
answer's `fields` holds it; send it back to change that item. Leave it out
|
|
117
|
+
again and the items are replaced by new ones, and their files fetched again.
|
|
118
|
+
- **Read back what you wrote** with `get_product_by_ref`: every field as stored
|
|
119
|
+
(`fields`), what a visitor sees of them (`publicFields`), and every category
|
|
120
|
+
with its `status`, a concept too.
|
|
87
121
|
- **Archiving keeps the product** for the invoices that name it;
|
|
88
122
|
`upsert_product` with `archived: false` brings it back.
|
|
89
123
|
|