@functional-systems/lambdadb-mcp 0.1.6-dev.19 → 0.1.6-dev.20

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
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Pin the LambdaDB SDK to 0.10.0. Expand Query/Fetch/List and rerank limits to
6
+ 1000 on supporting servers, retaining facet and collection-list limits of 100.
7
+ Vector dimensions now require integers from 64 to 4096 and similarity accepts
8
+ only cosine/euclidean; invalid requests and existing out-of-contract collection
9
+ metadata fail SDK validation. Update vector fixtures and native source guidance.
10
+
5
11
  - Synchronize the 0.1.5 release history and start the 0.1.6 development line.
6
12
 
7
13
  ## [0.1.5] - 2026-10-25
package/README.md CHANGED
@@ -112,8 +112,8 @@ Optional write tools:
112
112
 
113
113
  ## API contract and tool inputs
114
114
 
115
- The LambdaDB SDK is pinned to `@functional-systems/lambdadb@0.8.1`, checked against
116
- the published package and [v0.8.1 release](https://github.com/lambdadb/lambdadb-typescript-client/releases/tag/v0.8.1).
115
+ The LambdaDB SDK is pinned to `@functional-systems/lambdadb@0.10.0`, checked against
116
+ the published package and [v0.10.0 changelog](https://github.com/lambdadb/lambdadb-typescript-client/blob/v0.10.0/CHANGELOG.md).
117
117
  This dependency update applies to builds containing this change. Publishing the SDK
118
118
  alone does not update previously published or installed MCP packages.
119
119
 
@@ -124,11 +124,13 @@ alone does not update previously published or installed MCP packages.
124
124
  Omitting `ref` reads from `main`. `consistentRead: true` is supported only by
125
125
  Query/Fetch with an omitted ref or a direct Branch ref. List has no `consistentRead`.
126
126
  - Query may omit `query` for match-all and accepts `facets` for keyword bucket counts
127
- across all matches. Document `size` is 1–100, or 0 when at least one facet is supplied.
127
+ across all matches. Document `size` is 1–1000, or 0 when at least one facet is supplied.
128
128
  Up to five facet fields (including dotted paths) are allowed. Each field's options
129
129
  accept only `size`: an integer from 1–100, omitted, or `null`. Omitted/null bucket
130
130
  size uses the server default of 10; MCP forwards it unchanged. Empty `facets: {}`
131
131
  is accepted except with `size: 0`. Facet results survive inline and `docsUrl` responses.
132
+ - Fetch accepts up to 1000 IDs; List accepts `size` from 1–1000 (server default 100).
133
+ These expanded read and rerank limits require a supporting server deployment.
132
134
  - List also accepts `filter`, `fields`, `includeVectors`, and `partitionFilter`.
133
135
  The SDK selects the extended POST endpoint when needed and preserves pagination tokens.
134
136
  - Upsert/Delete accept an optional `branch`; omitting it writes to `main`.
@@ -206,7 +208,7 @@ Bayesian requires exactly two signals. Boolean subqueries may combine clauses
206
208
  within a signal, but explicit boosts (even `1`) on either signal or its Boolean
207
209
  descendants and nested rank-fusion queries are unsupported. Do not supply fusion
208
210
  weights. Without rerank, top-level `candidateSize` is required and must satisfy
209
- `1 <= size <= candidateSize <= 100`; omitted `size` retains the server default of
211
+ `1 <= size <= candidateSize <= 1000`; omitted `size` retains the server default of
210
212
  10. The budget is per signal, independent of final output size and `knn.k`.
211
213
 
212
214
  With rerank, omit top-level `candidateSize` and use `rerank.candidateSize`:
@@ -270,7 +272,7 @@ With write tools enabled, call `lambdadb_create_collection` with:
270
272
 
271
273
  Then call `lambdadb_upsert_docs` with
272
274
  `{"collectionName":"native-articles","docs":[{"id":"one","body":"Restore a saved version."}]}`.
273
- The source must be a text field; omit the generated vector from documents.
275
+ The source may be an unindexed stored string path; omit the generated vector from documents.
274
276
  Use `knn.queryText` instead of `queryVector` for this field, including in either
275
277
  Bayesian example above. For example, call `lambdadb_query_collection` with:
276
278
 
@@ -283,6 +285,9 @@ Bayesian example above. For example, call `lambdadb_query_collection` with:
283
285
  ```
284
286
 
285
287
  Native embedding dimensions and similarity are optional and belong inside `embedding`.
288
+ Supplied vector dimensions must be integers from 64 to 4096; similarity supports
289
+ only `cosine` or `euclidean`. Model-specific native maxima remain server-validated.
290
+ Existing collections with out-of-contract vector metadata fail SDK response validation.
286
291
  MCP does not infer a flag, provider, model or native embedding dimensions/similarity default.
287
292
  The SDK rejects `managedEmbedding: false` with `embedding`, and native embedding
288
293
  with top-level dimensions/similarity. Caller-provided vectors continue to use
@@ -325,7 +330,7 @@ ordered from lowest to highest relevance (2 KiB each, 8 KiB total UTF-8).
325
330
  Omitted/null criteria uses defaults; text, order, nulls and omission are preserved.
326
331
 
327
332
  Final `size`, vector-leg `knn.k`, and merged `rerank.candidateSize` are separate.
328
- Require `1 <= size <= candidateSize <= 100`; omitted/null candidateSize defaults
333
+ Require `1 <= size <= candidateSize <= 1000`; omitted/null candidateSize defaults
329
334
  on the server to `max(50, size)`, with final size defaulting to 10. MCP never
330
335
  increases `k`. Reranking requires a scoring retrieval query, forbids `sort`,
331
336
  match-all and filter-only Boolean requests, and preserves ref/consistentRead
@@ -17,7 +17,7 @@ const rerankSchema = z.strictObject({
17
17
  queryText: z.string().min(1).describe("Required nonblank query text, at most 8 KiB UTF-8, including for raw vector queries."),
18
18
  fields: z.array(z.string().min(1)).min(1).max(8).meta({ uniqueItems: true })
19
19
  .describe("Unique stored scalar text paths in model input order; separate from returned fields projection."),
20
- candidateSize: z.number().int().min(1).max(100).nullable().optional()
20
+ candidateSize: z.number().int().min(1).max(1000).nullable().optional()
21
21
  .describe("Merged candidate cap, at least final size. Omitted/null defaults to max(50, size); never changes knn.k."),
22
22
  onFailure: z.enum(["error", "returnOriginal"]).nullable().optional()
23
23
  .describe("Omitted/null defaults to error. returnOriginal covers only eligible provider failures."),
@@ -75,10 +75,10 @@ export function registerReadTools(server, config) {
75
75
  },
76
76
  inputSchema: z.strictObject({
77
77
  collectionName: nameSchema,
78
- size: z.number().int().min(0).max(100).optional()
79
- .describe("Documents to return (1–100), or 0 with nonempty facets."),
78
+ size: z.number().int().min(0).max(1000).optional()
79
+ .describe("Documents to return (1–1000), or 0 with nonempty facets."),
80
80
  // Preserve SDK/server validation and error classification for free-form queries.
81
- candidateSize: z.number().int().optional().describe("Bayesian without rerank requires 1 <= size <= candidateSize <= 100 (size defaults to 10 on the server). With rerank, omit this field and use rerank.candidateSize, whose default is unchanged. Unsupported for other queries; server validates these combinations."),
81
+ candidateSize: z.number().int().optional().describe("Bayesian without rerank requires 1 <= size <= candidateSize <= 1000 (size defaults to 10 on the server). With rerank, omit this field and use rerank.candidateSize, whose default is unchanged. Unsupported for other queries; server validates these combinations."),
82
82
  query: z.record(z.string(), z.any()).optional().describe("Free-form query; omit for match-all. Top-level bayesian is an array of exactly two subqueries, with no explicit boosts on either subquery or its Boolean descendants. Nested rank fusion and fusion weights are unsupported. Server validates the query contract."),
83
83
  facets: facetsSchema.optional(),
84
84
  rerank: rerankSchema,
@@ -138,7 +138,7 @@ export function registerReadTools(server, config) {
138
138
  },
139
139
  inputSchema: z.strictObject({
140
140
  collectionName: nameSchema,
141
- size: z.number().int().min(1).max(100).optional(),
141
+ size: z.number().int().min(1).max(1000).optional(),
142
142
  pageToken: z.string().optional(),
143
143
  ref: readRefSchema.optional(),
144
144
  filter: z.record(z.string(), z.any()).optional(),
@@ -173,7 +173,7 @@ export function registerReadTools(server, config) {
173
173
  },
174
174
  inputSchema: z.strictObject({
175
175
  collectionName: nameSchema,
176
- ids: z.array(z.string().min(1)).min(1).max(100),
176
+ ids: z.array(z.string().min(1)).min(1).max(1000),
177
177
  ref: readRefSchema.optional(),
178
178
  consistentRead: z.boolean().optional().describe("true requires a direct branch ref or omitted ref (main)."),
179
179
  includeVectors: z.boolean().optional(),
@@ -12,7 +12,7 @@ export function registerWriteTools(server, config) {
12
12
  },
13
13
  inputSchema: z.strictObject({
14
14
  collectionName: nameSchema,
15
- indexConfigs: z.record(z.string(), z.any()).refine((value) => Object.keys(value).length > 0, "indexConfigs must contain at least one field.").describe("Field configurations validated by the SDK/server. Native embedding vectors: {type: 'vector', embedding: {provider, model, sourceField, dimensions?, similarity?}}; declare sourceField as text. Native embedding dimensions/similarity belong inside embedding, never at the field top level. Do not combine embedding with managedEmbedding: false. Legacy true is preserved; no provider/model or native embedding defaults are inferred. Caller-provided vectors retain top-level dimensions/similarity."),
15
+ indexConfigs: z.record(z.string(), z.any()).refine((value) => Object.keys(value).length > 0, "indexConfigs must contain at least one field.").describe("Field configurations validated by the SDK/server. Native embedding vectors: {type: 'vector', embedding: {provider, model, sourceField, dimensions?, similarity?}}; sourceField may be an unindexed stored string path. Native embedding dimensions/similarity belong inside embedding, never at the field top level. Do not combine embedding with managedEmbedding: false. Legacy true is preserved; no provider/model or native embedding defaults are inferred. Caller-provided vectors retain top-level dimensions/similarity. Supplied dimensions must be integers from 64 to 4096; similarity supports only cosine or euclidean. Model-specific native dimension maxima are server-validated."),
16
16
  description: z.string().max(255).optional(),
17
17
  tags: z.record(z.string().regex(/^[A-Za-z0-9_.-]{1,63}$/), z.string().min(1).max(127).regex(/^[^:#,]+$/))
18
18
  .refine((value) => Object.keys(value).length <= 5, "At most five tags are allowed.")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@functional-systems/lambdadb-mcp",
3
- "version": "0.1.6-dev.19",
3
+ "version": "0.1.6-dev.20",
4
4
  "private": false,
5
5
  "description": "MCP server for LambdaDB data plane",
6
6
  "type": "module",
@@ -24,7 +24,7 @@
24
24
  "test:package": "node scripts/test-package.mjs"
25
25
  },
26
26
  "dependencies": {
27
- "@functional-systems/lambdadb": "0.8.1",
27
+ "@functional-systems/lambdadb": "0.10.0",
28
28
  "@modelcontextprotocol/sdk": "1.32.2",
29
29
  "zod": "^4.6.7"
30
30
  },
@@ -62,5 +62,5 @@
62
62
  "access": "public",
63
63
  "registry": "https://registry.npmjs.org"
64
64
  },
65
- "gitHead": "28ddf4e50e73049f9f824226037e11314f22b8b8"
65
+ "gitHead": "3d73730f700f785062ba59832a1e506857992dbd"
66
66
  }