@vectros-ai/mcp-server 0.5.2 → 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/CHANGELOG.md CHANGED
@@ -3,6 +3,72 @@
3
3
  All notable changes to `@vectros-ai/mcp-server` are documented here.
4
4
  This project adheres to [Semantic Versioning](https://semver.org).
5
5
 
6
+ ## 0.6.0 — 2026-07-03
7
+
8
+ Curation-focused tool improvements: look records and documents up by your own
9
+ identifier, re-sync a changed body, archive and restore documents without delete
10
+ authority, and get a clear error when an argument is wrong.
11
+
12
+ ### Added
13
+
14
+ - **`externalId` selector on `record_get`, `record_update`, `document_get`, and
15
+ `document_update`.** Pass `externalId` together with `type` as an alternative to the
16
+ Vectros `id` — the tool resolves it for you, so an agent that only knows its own
17
+ identifier no longer has to make a separate lookup call first. `id` still works and
18
+ takes precedence when both are supplied.
19
+ - **`upsert` on `document_ingest`.** With `upsert: true`, ingesting a document whose
20
+ `externalId` already exists overwrites its stored content and re-indexes it, instead
21
+ of returning the existing document unchanged. Re-supply the same `schemaId` so the
22
+ `externalId` resolves within the same type.
23
+ - **`text` on `document_update`.** Replace a text document's body in place; the document
24
+ is re-queued for indexing so search reflects the new content.
25
+ - **`status` on `document_update` — archive and restore a document.** Set
26
+ `status: "ARCHIVED"` to soft-retract a document: it is pulled from search and recall
27
+ but kept and recoverable. Set `status: "ACTIVE"` to re-index and restore it. This is
28
+ the way to retire superseded content with a credential that has no delete authority.
29
+ Document reads (`document_get`, `document_query`) surface the caller-controlled
30
+ lifecycle `status` alongside the read-only processing `indexStatus`.
31
+ - **`hybrid_search` results are now sized for an agent's context window.** Each hit returns
32
+ its matched `chunkText` plus a short `snippet` by default; the broader surrounding passage
33
+ (`contextText`) is opt-in via **`includeContext: true`** (and is de-duplicated against
34
+ `chunkText` when included, so the same text is never sent twice). Internal search-index
35
+ bookkeeping fields (`tenantId`, `owner_id`, `model_type`, `rootFolderId`, `folderId`) are
36
+ stripped from each hit's `metadata`, keeping the fields you ingested. An oversized response
37
+ is trimmed to the top hits with **`truncated: true`** so one search can't overflow the
38
+ context window. A **`textLegEmpty: true`** flag signals that the keyword (BM25) leg matched
39
+ nothing across every hit — usually a long natural-language query under the default
40
+ `PHRASE` matching; retry with a short keyword phrase or `textMode: "OR"`.
41
+
42
+ ### Changed
43
+
44
+ - Updated the bundled `@vectros-ai/sdk` to **0.32.0**, keeping the server aligned
45
+ with the current Vectros API (adds the document lifecycle `status` field, kept
46
+ distinct from the processing `indexStatus`).
47
+ - **Document responses keep the two status axes separate.** `status` is the
48
+ caller-controlled lifecycle (`ACTIVE`/`ARCHIVED`); `indexStatus` is the read-only
49
+ processing state (`PENDING_INDEX`, `INDEXED`, …), matching the current API.
50
+ `document_ingest`'s file mode accordingly reports its "uploaded, indexing queued"
51
+ marker as `indexStatus: "PENDING_INDEX"` — previously it overwrote `status` with
52
+ that value. Poll `document_get` until `indexStatus` is `INDEXED`.
53
+ - **Unknown arguments are now rejected, not ignored.** Calling a tool with an argument
54
+ it does not accept returns an error that names the unrecognized key and lists the
55
+ valid arguments for that tool, instead of silently dropping it. This surfaces typos
56
+ and stale parameter names immediately rather than letting a call quietly do the wrong
57
+ thing. `record_query`'s `field` documentation now also calls out that `externalId` is
58
+ always queryable.
59
+
60
+ ## 0.5.3 — 2026-06-29
61
+
62
+ SDK refresh. No tool, parameter, or result shapes changed.
63
+
64
+ ### Changed
65
+
66
+ - Updated the bundled `@vectros-ai/sdk` to **0.31.0**, keeping the server aligned
67
+ with the current Vectros API (create endpoints now report whether a resource was
68
+ newly created and accept an opt-in `upsert`). The `record_create`, `folder_create`,
69
+ and `document_ingest` tools were adjusted to the regenerated client's request shape;
70
+ their MCP-facing inputs and outputs are unchanged.
71
+
6
72
  ## 0.5.2 — 2026-06-26
7
73
 
8
74
  Distribution fix + SDK refresh. No tool, parameter, or result shapes changed.
package/README.md CHANGED
@@ -55,6 +55,21 @@ developer portal. The command then:
55
55
  Restart your MCP client and you're done. It's idempotent (re-run any time);
56
56
  `--rotate` replaces this machine's key.
57
57
 
58
+ **Want to browse the data yourself?** `bootstrap` sets up the key for your
59
+ *agent*, not a login for *you* — so a blueprint's context won't appear in the
60
+ data-plane app's switcher until you join your own user to it (the app lists only
61
+ contexts your user has access in). Grant yourself a role once, either in the admin
62
+ app (**Access → Contexts → _your context_ → Profiles → Create profile**, pick
63
+ yourself from the by-email picker, choose a role — no raw id needed) or from the
64
+ CLI with `--principal me` (resolves to your own user):
65
+
66
+ ```bash
67
+ vectros access grant --principal me --context <context-id> --role <role>
68
+ ```
69
+
70
+ Blueprints that ship a human role (e.g. `agentic-sdlc`'s `editor`) let you use
71
+ `--role`; otherwise grant inline scopes with `--actions records:r,search:r,…`.
72
+
58
73
  For scripted / agent use, set the sign-in token in the environment and skip
59
74
  the prompts:
60
75
 
@@ -181,8 +196,8 @@ available.
181
196
  |---|---|
182
197
  | `document_ingest` | Create a document — inline text body OR local file upload (file mode is stdio-transport only). Idempotent by `externalId`; optional `schemaId` + `payload` for a typed, lookup-queryable document. |
183
198
  | `document_query` | Query documents by lookup field (equality / range / prefix, with `asc`/`desc` ordering) or list mode (filter by ownership + type). |
184
- | `document_get` | Fetch a document by id (metadata; optional text truncated at ~8K tokens; optional presigned `downloadUrl` for file-backed documents). |
185
- | `document_update` | Patch a document's metadata / typed payload (deep-merged); optimistic concurrency via `expectedVersion`. |
199
+ | `document_get` | Fetch a document by id (metadata incl. lifecycle `status` + processing `indexStatus`; optional text truncated at ~8K tokens; optional presigned `downloadUrl` for file-backed documents). |
200
+ | `document_update` | Patch a document's metadata / typed payload (deep-merged); archive/restore via `status` (`ARCHIVED` soft-retracts from search, `ACTIVE` restores); optimistic concurrency via `expectedVersion`. |
186
201
  | `document_delete` | Permanently delete a document by id (removes it and its indexed content). |
187
202
 
188
203
  **Folders** (group records + documents)