wontopos-mcp 1.0.20 → 1.0.22

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.
Files changed (3) hide show
  1. package/README.md +36 -15
  2. package/index.mjs +694 -287
  3. package/package.json +5 -5
package/README.md CHANGED
@@ -1,8 +1,8 @@
1
1
  # wontopos-mcp — one memory across every AI tool
2
2
 
3
- > **Stable.** The tool names, their arguments and the shape of their results are a
4
- > contract now: a change that would break a working install waits for a major version.
5
- > The [API and SDKs](https://wontopos.com/en/why) underneath are versioned separately.
3
+ > **Beta.** The tools work today and are tested, but the surface may still
4
+ > change as we finish it. The [API and SDKs](https://wontopos.com/en/why)
5
+ > underneath are versioned separately.
6
6
 
7
7
  [Wontopos (WOS)](https://wontopos.com) long-term memory as an [MCP](https://modelcontextprotocol.io) server.
8
8
 
@@ -40,11 +40,11 @@ claude mcp add wontopos --env WONTOPOS_API_KEY=wos-live-... -- npx -y wontopos-m
40
40
  `WONTOPOS_USER_ID` picks the store this tool remembers into (optional, default
41
41
  `"default"`) - one per project, per person, or per agent.
42
42
 
43
- Store ids are folded: lowercased, and anything outside `[a-z0-9_]` becomes `_`, so
44
- `My-Project`, `my_project` and `MY.PROJECT` all name **one store**. The boot line
45
- prints the folded id, which is the one that actually holds the memories. Creating a
46
- second id that folds onto an existing one is refused with `409 conflict_error`
47
- rather than silently sharing it, so pick ids that stay distinct after the fold.
43
+ Store ids compare without regard to case, so `My-Project` and `my-project` name one
44
+ store. An id that differs from an existing store's only by punctuation (`my_project`,
45
+ `My.Project`) cannot be created beside it: creating it answers `409 conflict_error`,
46
+ and using it answers 404. The boot line prints the id as configured. Pick ids that
47
+ stay distinct once punctuation is ignored.
48
48
 
49
49
  The id must also match `[A-Za-z0-9][A-Za-z0-9._-]{0,63}`. An id outside that (anything
50
50
  in a non-Latin script, an email address) cannot be used at all: creating it answers 400 and every
@@ -119,7 +119,7 @@ quietly ignored, and that refusal would otherwise land on every search.
119
119
  | `recall` | One-call context: the **last 20 turns** (oldest first, one entry per utterance, so ten exchanges) plus relevant long-term memories and surroundings. First call when past context matters. `limit` (5-20) widens the sweep; `context_limit` (0-20) sets how much surrounding conversation rides along, `0` for the memories alone. Both need a limit-aware engine — an older one refuses the whole call, and the tool says which argument to drop. |
120
120
  | `remember` | Store what the user said that is worth keeping. `speaker: "me"` = the agent's own spoken commitments. Fetched content (search results, files) is not a memory. |
121
121
  | `store_turn` | Record one exchange as short-term history - what the user said and what the agent replied. This is what fills `recall`'s 20-turn window — one call appends two entries — and nothing else writes it, so the agent is told to call it after **each** exchange. A turn is billed like any write and is kept long-term as well, searchable afterwards. |
122
- | `search` | Search stored memories. `filters` narrows by TIME or topic (`event_from`/`event_to` = when the content happened, `categories`) — for "what did we decide in June?", which a query alone will not pin down. `verify` (0-3) spends extra passes to reach further back; `max_images` (0-5) asks for photos. Answers with `memories`, plus `images` and `verify_used` when those applied. |
122
+ | `search` | Search stored memories. `filters` narrows by TIME or topic (`event_from`/`event_to` = when the content happened, `categories`) — for "what did we decide in June?", which a query alone will not pin down. `verify` (0-3) spends extra passes to reach further back; `max_images` (0-5) asks for photos. Answers with `memories`, plus `self_memories` (the assistant's own words, which `filters` do not narrow), `images` and `verify_used` when those applied. |
123
123
  | `update` | Rewrite a memory the user's own words contradicted - keeps what is still true, adds what changed. |
124
124
  | `forget` | Delete one memory by id. |
125
125
  | `list_memories` | Browse everything stored (original text + metadata, paged) - "what do you know about me?", housekeeping. |
@@ -224,6 +224,28 @@ advertise different limits.
224
224
 
225
225
  ## Changelog
226
226
 
227
+ - **1.0.22** - back to beta, and less for the model to read. 1.0.19 to 1.0.21 said this
228
+ server was stable, but it is not ready yet, and this release changes the shape of
229
+ results. We are sorry for the change. The server instructions and tool descriptions go
230
+ from about 11.4k characters to 5.2k in the default setup: explanations, examples and
231
+ repeated notes are cut. With the argument schemas, what a model reads each session
232
+ goes from about 16.3k characters to 10.1k. Replies leave out empty and default fields
233
+ and the service's own notes, cut the times on memories to the second, and are not
234
+ indented. The fields left out no longer arrive, `revisions`' `counts` and `excludes`
235
+ among them. `search` returns the assistant's own words apart, in `self_memories`. They
236
+ used to be added to `memories`, so a filtered search mixed them, unfiltered, with what
237
+ matched. `view_image` says why it cannot show a picture rather than "Not found".
238
+ Underneath, the `wontopos` SDK pin moves to **2.2.42**.
239
+
240
+ - **1.0.21** - in HTTP mode every client gets its own session. A second host, a
241
+ reconnecting host and one that ended its session with DELETE each start a fresh
242
+ session, and a session id the server no longer holds answers 404, so a host starts
243
+ again after a restart. At most 32 sessions are kept, and an idle one closes after
244
+ 30 minutes. A request body over 256 KiB or a batch of more than 16 messages is
245
+ refused. `--help` and `--version` print and exit without reading the environment,
246
+ and the boot lines name the store id as you configured it. Node 20 or later is now
247
+ required (it was 18). Underneath, the `wontopos` SDK pin moves to **2.2.41**.
248
+
227
249
  - **1.0.20** - a trimmed reply no longer misreports its own size. When a result is
228
250
  larger than the 128KB cap the server cuts the arrays inside it, and the sibling
229
251
  `count` field kept the number from before the cut: a model was handed 100 memories
@@ -388,8 +410,7 @@ advertise different limits.
388
410
  collision (`alice-smith` vs `alice.smith`, two people, one collection) from the same id
389
411
  typed again. Sending the pre-folded form destroyed the signal, so a store created as
390
412
  `My-Project` answered a later `create_store` for `my_project` with **409
391
- conflict_error** - the store reported colliding with itself. Reads and writes were
392
- never affected (the API folds those on lookup either way). Now the raw id travels and
413
+ conflict_error** - the store reported colliding with itself. Now the raw id travels and
393
414
  only the messages speak in folded terms. Also corrected: 1.0.10 warned that an id with
394
415
  no latin alphanumerics makes every such id share one store. Measured
395
416
  against the live rule, that is not what happens - store ids must match
@@ -401,10 +422,10 @@ advertise different limits.
401
422
  1.0.8 fixed this for whitespace and stopped there: the API also lowercases an id and
402
423
  turns anything outside `[a-z0-9_]` into `_`, so `WONTOPOS_USER_ID=My-Project` read and
403
424
  wrote `my_project` while the ready line, the boot check and `create_store` all repeated
404
- the operator's own spelling back as confirmation. The fold matters because it collides:
405
- ids differing only by case or punctuation are ONE store, and an id with no latin
406
- alphanumerics folds to underscores that every such id shares - two different people,
407
- one set of memories. Both are now stated at boot. Underneath, the `wontopos` SDK floor
425
+ the operator's own spelling back as confirmation. The fold mattered because it collided:
426
+ ids differing only by case or punctuation reached ONE store then (case still does), and
427
+ 1.0.10 also warned that an id with no latin alphanumerics folds to underscores that every
428
+ such id shares, which 1.0.11 above corrects. Both were stated at boot. Underneath, the `wontopos` SDK floor
408
429
  moved to **2.2.27**: the declared range said `^2.2.24` while the lockfile still pinned
409
430
  **2.2.22**, so this package was built and tested against an SDK five releases old,
410
431
  including the one where store ids collapsed silently. A test now compares the LOCKED