@vectros-ai/mcp-server 0.16.0 → 0.16.1
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 +25 -0
- package/README.md +18 -3
- package/dist/cli-http.js +23 -7
- package/dist/cli-http.js.map +1 -1
- package/dist/cli-http.mjs +23 -7
- package/dist/cli-http.mjs.map +1 -1
- package/dist/cli.js +23 -7
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +23 -7
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +23 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +23 -7
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,31 @@
|
|
|
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.16.1 — 2026-08-27
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- **Claude Code setup docs: restart-to-load + Windows npx-resolution caveats.**
|
|
11
|
+
The "Configure manually (Claude Code)" section now covers three real
|
|
12
|
+
friction points found in dogfooding: a session already open when the
|
|
13
|
+
server is added needs a full quit + reopen (not just re-selecting the
|
|
14
|
+
tab); the `/mcp` panel shows the connector marketplace, not local stdio
|
|
15
|
+
servers, so it can't confirm the server loaded; and config resolves off
|
|
16
|
+
the git common root, so a linked worktree needs adding/opening from the
|
|
17
|
+
same project as its main repo. Also documents a Windows-specific trap: a
|
|
18
|
+
scoped-registry override for `@vectros-ai` in `.npmrc` can silently
|
|
19
|
+
resolve `npx -y @vectros-ai/mcp-server` to an unexpected internal build
|
|
20
|
+
that isn't guaranteed to run there — pin an explicit version if the
|
|
21
|
+
plain command fails to start.
|
|
22
|
+
- **`current_identity`'s `granted_capabilities` note now lists all five named capabilities.**
|
|
23
|
+
The tool description and the `identity` resource both listed only four
|
|
24
|
+
(`member-lifecycle` / `forensic-read` / `context-directory-read` / `delegate-mint`); the
|
|
25
|
+
platform's fifth, `delegate-principal-stamp`, is now named alongside them.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- Bundled `@vectros-ai/sdk` refreshed to the current release's staging build.
|
|
30
|
+
|
|
6
31
|
## 0.16.0 — 2026-08-27
|
|
7
32
|
|
|
8
33
|
### Added
|
package/README.md
CHANGED
|
@@ -166,8 +166,23 @@ claude mcp add vectros -e VECTROS_API_KEY=ssk_live_... -- npx -y @vectros-ai/mcp
|
|
|
166
166
|
```
|
|
167
167
|
|
|
168
168
|
Add `-e VECTROS_API_BASE_URL=https://api.staging.vectros.ai` for a non-production
|
|
169
|
-
environment.
|
|
170
|
-
|
|
169
|
+
environment.
|
|
170
|
+
|
|
171
|
+
**Load it into a session by restarting.** A Claude Code session that was
|
|
172
|
+
already open when you added the server won't pick it up mid-session — fully
|
|
173
|
+
quit and reopen the project (not just re-select the tab). The `/mcp` panel
|
|
174
|
+
shows the connector marketplace, not locally-configured stdio servers, so it
|
|
175
|
+
won't confirm the server is loaded — ask the agent to call a Vectros tool
|
|
176
|
+
instead. Config is keyed by the **git common root**, so a linked worktree
|
|
177
|
+
resolves to its main repo's `.mcp.json` — add and open from the same project.
|
|
178
|
+
|
|
179
|
+
> **Windows note:** if your `.npmrc` (or a global npm config) points the
|
|
180
|
+
> `@vectros-ai` scope at a private registry, a bare `npx -y @vectros-ai/mcp-server`
|
|
181
|
+
> can resolve an unexpected internal build there instead of the public
|
|
182
|
+
> release — and an internal build is not guaranteed to run on Windows. If the
|
|
183
|
+
> command above fails to start, either remove the scoped-registry override
|
|
184
|
+
> for a plain `npx` run, or pin an explicit version (`npx -y
|
|
185
|
+
> @vectros-ai/mcp-server@<version>`) known to work.
|
|
171
186
|
|
|
172
187
|
## Tools (22 tools)
|
|
173
188
|
|
|
@@ -214,7 +229,7 @@ available.
|
|
|
214
229
|
|
|
215
230
|
| Tool | What it does |
|
|
216
231
|
|---|---|
|
|
217
|
-
| `current_identity` | Describe the credential: tenantId, environment, principalType, principalKeyId, principalLabel, and (for scoped credentials) allowedActions + dataScope. Does **not** yet include `granted_capabilities` (`member-lifecycle` / `forensic-read` / `context-directory-read` / `delegate-mint`) — a separate reach dimension a scope clause can carry
|
|
232
|
+
| `current_identity` | Describe the credential: tenantId, environment, principalType, principalKeyId, principalLabel, and (for scoped credentials) allowedActions + dataScope. Does **not** yet include `granted_capabilities` (`member-lifecycle` / `forensic-read` / `context-directory-read` / `delegate-mint`, as of API 0.40.0, joined by `delegate-principal-stamp` in 0.42.0) — a separate reach dimension a scope clause can carry that `/v1/ping` doesn't report yet, so allowedActions + dataScope may understate a credential's true reach. Also reports this server's own version and the bundled SDK version (`mcpServerVersion`, `sdkVersion`). |
|
|
218
233
|
| `lookup_principal` | Resolve a user, or an identity entity in a namespace (`org`/`client`/any namespace you registered), by your own `externalId` (→ its Vectros UUID, for the ownership filters) or by a schema lookup field. Pass `contextId` to target a specific app context for a context-owned namespace. Read-only. |
|
|
219
234
|
| `version_history` | Read the audit/version trail (CREATE/UPDATE/DELETE, with actor + diff) for one record or document. Read-only. |
|
|
220
235
|
|
package/dist/cli-http.js
CHANGED
|
@@ -4516,7 +4516,7 @@ var AuthClient = class {
|
|
|
4516
4516
|
return handleNonStatusCodeError(_response.error, _response.rawResponse, "POST", "/v1/auth/token");
|
|
4517
4517
|
}
|
|
4518
4518
|
/**
|
|
4519
|
-
* Invite a new member to one of your app contexts by email
|
|
4519
|
+
* Invite a new member to one of your app contexts by email, OR grant an existing member access to an additional app context by inviting their same email again. Idempotent on the combination of context and email: re-inviting the same email into the SAME context rotates the token and resends the invitation rather than creating a duplicate — this requires the `users:r` and `users:u` scopes in addition to `users:c`, because resending rotates a credential on an existing invitation and invalidates any link already sent. Without them the collision returns 409 instead, with no invitation details and no change to the outstanding invitation. Inviting the SAME email into a DIFFERENT app context in this tenant, where that email already resolves to an existing member: if that member is active AND already has (or, once accepted, will have) a credential that works for the new context's own identity provider, this immediately grants them access to the new context (no email is sent — there is nothing to accept, `emailSent` is false) — this additionally requires the `users:r` scope (no `users:u`, since nothing is mutated), because the response names the existing member's userId, a fact about them your credential could not otherwise learn through this endpoint. If that active member's ONLY existing credential is for a DIFFERENT identity provider than the one the new context uses, a normal, independent invitation is created instead (its own new member id, a real token/accept link) — attaching them silently would leave no way for them to ever actually sign in to that context. If the existing member's original invitation is still pending, this attaches the new context's access to that same outstanding invitation and rotates its token (`users:r`+`users:u`, same as an ordinary resend — both the disclosure and the credential rotation apply here). A SUSPENDED member's email does not get new-context access this way — reactivate them explicitly first. Returns HTTP 201 in every one of those cases. Returns 409 if that email already belongs to an active or suspended member of THIS specific app context, already has a PENDING invitation for THIS specific app context, or resolves to an existing member elsewhere in the tenant and your token lacks the additional scope the grant/attach requires (`users:r`, or `users:r`+`users:u` for the still-pending case). An email that already has an identity in your OTHER tenant (test vs. live) is not a collision either — it creates an additional, independent membership in this tenant for that same identity. When `sendEmail` is false, the response includes the raw token and a ready-to-use accept link so you can deliver the invitation through your own email provider. Requires the `users:c` scope — or, for a credential scoped to a single app context, the `member-lifecycle` capability plus the matching `profiles:c`/`profiles:r`/`profiles:u` grant(s) in that context, as an equally sufficient alternative to every `users:c`/`users:r`/`users:u` requirement in this description.
|
|
4520
4520
|
*
|
|
4521
4521
|
* @param {Vectros.CreateInviteRequest} request
|
|
4522
4522
|
* @param {AuthClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
@@ -4587,7 +4587,7 @@ var AuthClient = class {
|
|
|
4587
4587
|
return handleNonStatusCodeError(_response.error, _response.rawResponse, "POST", "/v1/users/invite");
|
|
4588
4588
|
}
|
|
4589
4589
|
/**
|
|
4590
|
-
* Resend an outstanding invitation, identified by its email and app context. Rotates the invitation token and extends its expiry, then (when `sendEmail` is true) re-delivers the email. Rotating the token invalidates any previously issued link for this invitation, so only the newest link works. The invitee's pending permissions are left unchanged. Because this rotates a credential on an existing invitation, it requires the `users:c`, `users:r` and `users:u` scopes.
|
|
4590
|
+
* Resend an outstanding invitation, identified by its email and app context. Rotates the invitation token and extends its expiry, then (when `sendEmail` is true) re-delivers the email. Rotating the token invalidates any previously issued link for this invitation, so only the newest link works. The invitee's pending permissions are left unchanged. Because this rotates a credential on an existing invitation, it requires the `users:c`, `users:r` and `users:u` scopes — or, for a credential scoped to a single app context, the `member-lifecycle` capability plus the matching `profiles:c`/`profiles:r`/`profiles:u` grant(s) in that context.
|
|
4591
4591
|
*
|
|
4592
4592
|
* @param {Vectros.CreateInviteRequest} request
|
|
4593
4593
|
* @param {AuthClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
@@ -5460,7 +5460,21 @@ var DocumentsClient = class {
|
|
|
5460
5460
|
return HttpResponsePromise.fromPromise(this.__lookupDocuments(request, requestOptions));
|
|
5461
5461
|
}
|
|
5462
5462
|
async __lookupDocuments(request, requestOptions) {
|
|
5463
|
-
const {
|
|
5463
|
+
const {
|
|
5464
|
+
type: type_,
|
|
5465
|
+
field,
|
|
5466
|
+
value,
|
|
5467
|
+
from: from_,
|
|
5468
|
+
to,
|
|
5469
|
+
prefix,
|
|
5470
|
+
sortFrom,
|
|
5471
|
+
sortTo,
|
|
5472
|
+
startFrom,
|
|
5473
|
+
limit,
|
|
5474
|
+
order,
|
|
5475
|
+
userId,
|
|
5476
|
+
scope
|
|
5477
|
+
} = request;
|
|
5464
5478
|
const _queryParams = {
|
|
5465
5479
|
type: type_,
|
|
5466
5480
|
field,
|
|
@@ -5468,6 +5482,8 @@ var DocumentsClient = class {
|
|
|
5468
5482
|
from: from_,
|
|
5469
5483
|
to,
|
|
5470
5484
|
prefix,
|
|
5485
|
+
sortFrom,
|
|
5486
|
+
sortTo,
|
|
5471
5487
|
startFrom,
|
|
5472
5488
|
limit,
|
|
5473
5489
|
order: order != null ? order : void 0,
|
|
@@ -9272,8 +9288,8 @@ function warnOnSuboptimalKey(key, log) {
|
|
|
9272
9288
|
|
|
9273
9289
|
// src/build-info.ts
|
|
9274
9290
|
var BUILD_INFO = {
|
|
9275
|
-
mcpServer: true ? "0.16.
|
|
9276
|
-
sdk: true ? "0.
|
|
9291
|
+
mcpServer: true ? "0.16.1" : "dev",
|
|
9292
|
+
sdk: true ? "0.42.0" : "dev"
|
|
9277
9293
|
};
|
|
9278
9294
|
|
|
9279
9295
|
// src/log.ts
|
|
@@ -10816,7 +10832,7 @@ var inputSchema19 = {
|
|
|
10816
10832
|
var currentIdentity = ({ log, apiKey, environment }) => ({
|
|
10817
10833
|
name: "current_identity",
|
|
10818
10834
|
title: "Current identity (tenant + principal scope)",
|
|
10819
|
-
description: "Describe the credential the MCP server is operating under. Returns tenantId, environment (staging|production), principalType (root_key|scoped_key|token), principalKeyId, principalLabel, and (for scoped credentials) allowedActions plus dataScope \u2014 the credential's verb+ownership reach as { userId, scopes[] }, where each scope is a `namespace:value` string (e.g. \"org:<uuid>\"). Note: this does not yet include granted_capabilities (member-lifecycle / forensic-read / context-directory-read / delegate-mint) \u2014 a separate reach dimension a scope clause can carry
|
|
10835
|
+
description: "Describe the credential the MCP server is operating under. Returns tenantId, environment (staging|production), principalType (root_key|scoped_key|token), principalKeyId, principalLabel, and (for scoped credentials) allowedActions plus dataScope \u2014 the credential's verb+ownership reach as { userId, scopes[] }, where each scope is a `namespace:value` string (e.g. \"org:<uuid>\"). Note: this does not yet include granted_capabilities (member-lifecycle / forensic-read / context-directory-read / delegate-mint, as of API 0.40.0, joined by delegate-principal-stamp in 0.42.0) \u2014 a separate reach dimension a scope clause can carry that /v1/ping does not report yet, so allowedActions+dataScope may understate a credential's true reach. Also reports mcpServerVersion (this server's own package version) and sdkVersion (the bundled @vectros-ai/sdk version) so a caller can tell what build it's talking to. Use this when the user asks 'what can you do here?', 'what tenant am I in?', or 'what version is this?'. Calls GET /v1/ping under the hood.",
|
|
10820
10836
|
inputSchema: inputSchema19,
|
|
10821
10837
|
handler: async () => {
|
|
10822
10838
|
try {
|
|
@@ -11307,7 +11323,7 @@ var identityResource = ({ log, apiKey, environment }) => ({
|
|
|
11307
11323
|
name: "identity",
|
|
11308
11324
|
uri: "vectros://identity",
|
|
11309
11325
|
title: "Current identity (tenant + principal scope)",
|
|
11310
|
-
description: "The tenant + principal scope the MCP server is authenticated as. Returns the same payload as the `current_identity` tool: status, tenantId, environment, principalType, principalKeyId, principalLabel, (for scoped credentials) allowedActions + dataScope ({ userId, scopes[] }). Note: this does not yet include granted_capabilities (member-lifecycle / forensic-read / context-directory-read / delegate-mint) \u2014 a separate reach dimension a scope clause can carry
|
|
11326
|
+
description: "The tenant + principal scope the MCP server is authenticated as. Returns the same payload as the `current_identity` tool: status, tenantId, environment, principalType, principalKeyId, principalLabel, (for scoped credentials) allowedActions + dataScope ({ userId, scopes[] }). Note: this does not yet include granted_capabilities (member-lifecycle / forensic-read / context-directory-read / delegate-mint, as of API 0.40.0, joined by delegate-principal-stamp in 0.42.0) \u2014 a separate reach dimension a scope clause can carry that /v1/ping does not report yet, so allowedActions+dataScope may understate a credential's true reach. Also reports mcpServerVersion and sdkVersion (this build's own version and the bundled @vectros-ai/sdk version). The /v1/ping backing call ships the extended shape today; the version fields are always client-derived.",
|
|
11311
11327
|
mimeType: "application/json",
|
|
11312
11328
|
read: async () => {
|
|
11313
11329
|
const identity = await resolveIdentity({ log, apiKey, environment });
|