@vectros-ai/mcp-server 0.18.1 → 0.18.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/CHANGELOG.md CHANGED
@@ -3,6 +3,24 @@
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.18.2 — 2026-10-25
7
+
8
+ ### Changed
9
+
10
+ - **The `providerAlias` description of `rag_ask` and `document_ask` names the three waiver refusals.** When a call routed
11
+ through your own provider is refused because the account's provider waiver is not in force, the `403` carries an
12
+ `errorCode`: `WAIVER_NOT_SIGNED`, `WAIVER_TEXT_CHANGED` or `WAIVER_REVOKED`. The two descriptions and the README say what
13
+ each means and that an account owner resolves each in the developer portal.
14
+ - **The `expectedVersion` descriptions of `record_update`, `document_update` and `folder_update` say what happens without it.**
15
+ An update that meets another change to the same item at the same moment is refused as a conflict (`409`,
16
+ `VERSION_CONFLICT`) whether or not `expectedVersion` is sent.
17
+ - **The README lists the refusals added in API 0.48.0 and what the tools return for them:** `429` `BALANCE_BUSY`, `503`
18
+ `BALANCE_UNAVAILABLE`, and a `503` with no `errorCode` for a `providerAlias` whose stored provider key cannot be opened. It
19
+ also describes the `409` of a concurrent update and the items of a deleted schema.
20
+ - **The `current_identity` tool and the `vectros://identity` resource list `trigger-control-plane-grant` among the capabilities
21
+ that the credential description omits.**
22
+ - **The comments in the shipped code describe the code as it is today.** Behaviour is unchanged.
23
+
6
24
  ## 0.18.1 — 2026-10-12
7
25
 
8
26
  ### Changed
@@ -264,7 +282,7 @@ This project adheres to [Semantic Versioning](https://semver.org).
264
282
  - **`folder_delete` no longer implies a record cannot be moved.** It said a record must be deleted
265
283
  because it cannot be re-filed. The API supports re-filing one (`folderId` is patchable); it is
266
284
  *this server* that does not expose it — `record_update` has no `folderId` argument. As written, an
267
- agent clearing a folder could have deleted partner data where a move was available, then reported
285
+ agent clearing a folder could have deleted a record where a move was available, then reported
268
286
  that a move was impossible. It now names the gap as this server's and says to move the record
269
287
  through the API/SDK rather than deleting it here.
270
288
  - **`record_batch_write` no longer claims duplicate `externalId`s within one batch are refused.**
package/README.md CHANGED
@@ -279,6 +279,19 @@ All 23 tools wrap published Vectros HTTP API endpoints. JSON
279
279
  responses are what the agent sees as tool output. Per-call cost
280
280
  surfaces via the `usage` field on inference responses.
281
281
 
282
+ **Concurrent updates.** `record_update`, `document_update`, `folder_update` and `document_ingest` with `upsert: true`
283
+ return `409` (`errorCode: VERSION_CONFLICT`) when another request changed the same item at the same moment, whether or not
284
+ you pass `expectedVersion`. Nothing is written and the other change is kept: re-read the item and retry.
285
+ `expectedVersion` still refuses an update made against a version you read earlier, even if the other change finished long
286
+ ago. An update to an item that was deleted a moment earlier returns `404`. In `record_batch_write` with `upsert`, an item
287
+ that meets another change at the same moment is reported in the results with `status: conflict` and
288
+ `errorCode: VERSION_CONFLICT`; send that item again. Items written with `atomicity: all_or_nothing` are not covered.
289
+
290
+ **Items of a deleted schema.** An item whose schema no longer exists is not served: reading it (`record_get`,
291
+ `document_get`) returns an error, updating it, reading its `version_history`, and reading a document's text, download or
292
+ answers (`document_ask`) are refused, and `record_query`, `document_query` and `record_batch_get` leave it out. Delete the
293
+ item.
294
+
282
295
  ### Routing a call through your own model provider
283
296
 
284
297
  `rag_ask` and `document_ask` take an optional `providerAlias`: the alias of a model provider config your Vectros
@@ -288,7 +301,11 @@ provider config's default model when omitted). The server forwards `providerAlia
288
301
  never fills it in.
289
302
 
290
303
  It works only after your account has set up the provider and signed the platform's risk-acceptance waiver. Without
291
- both, the platform refuses the call with a `403`, which the tool returns to you as written.
304
+ both, the platform refuses the call with a `403`, which the tool returns to you as written. When the waiver is the
305
+ cause, the `403` carries an `errorCode` that says which case it is: `WAIVER_NOT_SIGNED` (the waiver has not been
306
+ signed), `WAIVER_TEXT_CHANGED` (it was signed, but its text changed afterwards, so the earlier signature no longer
307
+ counts) or `WAIVER_REVOKED` (an account owner revoked it). An account owner resolves each in the developer portal
308
+ (**Model Providers**); retrying the call does not help.
292
309
 
293
310
  If your account has accepted the Business Associate Agreement with Vectros in the developer portal, an account owner must also attest each provider
294
311
  config in the developer portal (**Model Providers**) before a call can use it. Until then the platform refuses the
@@ -517,8 +534,12 @@ The server is on a pre-1.0 track toward a stable 1.0 release.
517
534
  ## Rate limits
518
535
 
519
536
  Tool calls hit the same per-minute rate limits as any API client; the
520
- [rate limits guide](https://docs.vectros.ai/guides/operations-trust/rate-limits) says which requests count. On a `429` the tool returns the error with `HTTP 429` and `errorCode: RATE_LIMITED`, so the agent can pace and retry
521
- rather than blind-retrying. The guide also lists
537
+ [rate limits guide](https://docs.vectros.ai/guides/operations-trust/rate-limits) says which requests count. On a rate-limit `429` the tool returns the error with `HTTP 429` and `errorCode: RATE_LIMITED`, so the agent can pace and retry
538
+ rather than blind-retrying. `rag_ask` and `document_ask` can also return `429` with `errorCode: BALANCE_BUSY` (your pre-paid
539
+ balance is momentarily busy with your other concurrent requests: not a rate limit and not a shortage, so do not top up;
540
+ retry shortly) or `503` with `errorCode: BALANCE_UNAVAILABLE` (a temporary fault interrupted the balance step; also not a
541
+ shortage; retry shortly). A `402` means the balance is short (`INSUFFICIENT_BALANCE`) or the plan's usage limit is reached (`SUBSCRIPTION_LIMIT_EXCEEDED`). A `503` with no `errorCode` on a call that names a `providerAlias` means the platform cannot open the stored provider key: retry shortly, and enter the key again in the developer portal if it persists. The tool returns the message, `errorCode` and
542
+ `requestId`, not the `Retry-After` header. The guide also lists
522
543
  the per-plan limits.
523
544
 
524
545
  ## Building from source