From bef5acf0b18f9e1f75bb2f4ea4d91d107cd3d594 Mon Sep 17 00:00:00 2001 From: Nicolas Bouliol Date: Mon, 13 Apr 2026 17:42:14 +0200 Subject: [PATCH 1/5] fix(mcp server): do not pass the whole query in requests --- packages/agent-client/src/query-serializer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/agent-client/src/query-serializer.ts b/packages/agent-client/src/query-serializer.ts index 13e52582e..0ae3eb40a 100644 --- a/packages/agent-client/src/query-serializer.ts +++ b/packages/agent-client/src/query-serializer.ts @@ -8,10 +8,10 @@ export default class QuerySerializer { if (!query) return {}; return { - ...query, sort: QuerySerializer.formatSort(query.sort), filters: QuerySerializer.formatFilters(query.filters), searchExtended: !!query.shouldSearchInRelation, + search: query.search, 'page[size]': query.pagination?.size, 'page[number]': query.pagination?.number, ...(query.fields?.length ? QuerySerializer.formatFields(collectionName, query.fields) : {}), From 7e67658e81e12546bf9b7f33158bd8baa67f32c3 Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Mon, 13 Apr 2026 21:08:09 +0200 Subject: [PATCH 2/5] fix(agent-client): destructure known fields instead of dropping all extra params The previous fix removed ...query entirely, which also dropped extra params like segmentQuery and connectionName that Segment passes through. Now destructure only the fields we reformat (fields, sort, filters, shouldSearchInRelation, pagination) and spread the rest. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/agent-client/src/query-serializer.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/packages/agent-client/src/query-serializer.ts b/packages/agent-client/src/query-serializer.ts index 0ae3eb40a..0c400d2df 100644 --- a/packages/agent-client/src/query-serializer.ts +++ b/packages/agent-client/src/query-serializer.ts @@ -7,14 +7,16 @@ export default class QuerySerializer { static serialize(query: SelectOptions, collectionName: string): Record { if (!query) return {}; + const { fields, sort, filters, shouldSearchInRelation, pagination, ...rest } = query; + return { - sort: QuerySerializer.formatSort(query.sort), - filters: QuerySerializer.formatFilters(query.filters), - searchExtended: !!query.shouldSearchInRelation, - search: query.search, - 'page[size]': query.pagination?.size, - 'page[number]': query.pagination?.number, - ...(query.fields?.length ? QuerySerializer.formatFields(collectionName, query.fields) : {}), + ...rest, + sort: QuerySerializer.formatSort(sort), + filters: QuerySerializer.formatFilters(filters), + searchExtended: !!shouldSearchInRelation, + 'page[size]': pagination?.size, + 'page[number]': pagination?.number, + ...(fields?.length ? QuerySerializer.formatFields(collectionName, fields) : {}), }; } From 76396e4cc2e560df01acc1554f37d66d3f6aebcb Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Mon, 13 Apr 2026 21:13:50 +0200 Subject: [PATCH 3/5] fix(agent-client): make query params explicit instead of using rest spread List all known params explicitly (search, sort, filters, pagination, fields, segmentQuery, connectionName) instead of using ...rest spread which could leak unknown fields into the query string. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/agent-client/src/query-serializer.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/agent-client/src/query-serializer.ts b/packages/agent-client/src/query-serializer.ts index 0c400d2df..a3fe13d7d 100644 --- a/packages/agent-client/src/query-serializer.ts +++ b/packages/agent-client/src/query-serializer.ts @@ -7,16 +7,20 @@ export default class QuerySerializer { static serialize(query: SelectOptions, collectionName: string): Record { if (!query) return {}; - const { fields, sort, filters, shouldSearchInRelation, pagination, ...rest } = query; + const { fields, sort, filters, shouldSearchInRelation, pagination, search } = query; + const extra = query as Record; return { - ...rest, + search, sort: QuerySerializer.formatSort(sort), filters: QuerySerializer.formatFilters(filters), searchExtended: !!shouldSearchInRelation, 'page[size]': pagination?.size, 'page[number]': pagination?.number, ...(fields?.length ? QuerySerializer.formatFields(collectionName, fields) : {}), + // Extra params passed by Segment (segmentQuery, connectionName) + ...(extra.segmentQuery !== undefined && { segmentQuery: extra.segmentQuery }), + ...(extra.connectionName !== undefined && { connectionName: extra.connectionName }), }; } From 17877573d03049931b736c18f07d1756e4ffebab Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Mon, 13 Apr 2026 21:18:32 +0200 Subject: [PATCH 4/5] fix(agent-client): add segmentQuery and connectionName to SelectOptions type Remove unsafe Record cast by adding the segment fields to the type definition. TypeScript now validates these fields at compile time. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/agent-client/src/query-serializer.ts | 17 ++++++++++++----- packages/agent-client/src/types.ts | 2 ++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/packages/agent-client/src/query-serializer.ts b/packages/agent-client/src/query-serializer.ts index a3fe13d7d..692aa78a9 100644 --- a/packages/agent-client/src/query-serializer.ts +++ b/packages/agent-client/src/query-serializer.ts @@ -7,8 +7,16 @@ export default class QuerySerializer { static serialize(query: SelectOptions, collectionName: string): Record { if (!query) return {}; - const { fields, sort, filters, shouldSearchInRelation, pagination, search } = query; - const extra = query as Record; + const { + fields, + sort, + filters, + shouldSearchInRelation, + pagination, + search, + segmentQuery, + connectionName, + } = query; return { search, @@ -18,9 +26,8 @@ export default class QuerySerializer { 'page[size]': pagination?.size, 'page[number]': pagination?.number, ...(fields?.length ? QuerySerializer.formatFields(collectionName, fields) : {}), - // Extra params passed by Segment (segmentQuery, connectionName) - ...(extra.segmentQuery !== undefined && { segmentQuery: extra.segmentQuery }), - ...(extra.connectionName !== undefined && { connectionName: extra.connectionName }), + ...(segmentQuery !== undefined && { segmentQuery }), + ...(connectionName !== undefined && { connectionName }), }; } diff --git a/packages/agent-client/src/types.ts b/packages/agent-client/src/types.ts index bd644b9b3..0bc797f5a 100644 --- a/packages/agent-client/src/types.ts +++ b/packages/agent-client/src/types.ts @@ -27,4 +27,6 @@ export type SelectOptions = BaseOptions & { size?: number; // number of items per page number?: number; // current page number }; + segmentQuery?: string; // SQL query for live query segments + connectionName?: string; // Connection name for live query segments }; From a91b14dbd5bf4786e2574a076da4b11535ead80c Mon Sep 17 00:00:00 2001 From: alban bertolini Date: Mon, 13 Apr 2026 21:20:37 +0200 Subject: [PATCH 5/5] refactor(agent-client): simplify segmentQuery and connectionName in serialize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No need for conditional spread — undefined values are ignored by the query string builder. Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/agent-client/src/query-serializer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/agent-client/src/query-serializer.ts b/packages/agent-client/src/query-serializer.ts index 692aa78a9..a89fb48e5 100644 --- a/packages/agent-client/src/query-serializer.ts +++ b/packages/agent-client/src/query-serializer.ts @@ -20,14 +20,14 @@ export default class QuerySerializer { return { search, + segmentQuery, + connectionName, sort: QuerySerializer.formatSort(sort), filters: QuerySerializer.formatFilters(filters), searchExtended: !!shouldSearchInRelation, 'page[size]': pagination?.size, 'page[number]': pagination?.number, ...(fields?.length ? QuerySerializer.formatFields(collectionName, fields) : {}), - ...(segmentQuery !== undefined && { segmentQuery }), - ...(connectionName !== undefined && { connectionName }), }; }