From 0c9b2bc75e6ae776600c115850e7a79d3eee6227 Mon Sep 17 00:00:00 2001 From: Dave-London Date: Tue, 10 Feb 2026 07:52:39 +0200 Subject: [PATCH 1/2] fix: widen requestedSchema type to accept additional JSON Schema fields The `requestedSchema` object in `ElicitRequestFormParamsSchema` was too narrow, rejecting valid JSON Schema fields like `additionalProperties` that Zod v4's `.toJSONSchema()` and other JSON Schema generators produce. Add `.passthrough()` to the `requestedSchema` Zod object and include the `$schema` field (already present in the spec types) so that standard JSON Schema output is accepted without type errors. Fixes #1362 Co-Authored-By: Claude Opus 4.6 --- packages/core/src/types/types.ts | 13 ++++++++----- packages/core/test/spec.types.test.ts | 13 +++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/packages/core/src/types/types.ts b/packages/core/src/types/types.ts index 2a79944b9..58104a891 100644 --- a/packages/core/src/types/types.ts +++ b/packages/core/src/types/types.ts @@ -1993,11 +1993,14 @@ export const ElicitRequestFormParamsSchema = TaskAugmentedRequestParamsSchema.ex * A restricted subset of JSON Schema. * Only top-level properties are allowed, without nesting. */ - requestedSchema: z.object({ - type: z.literal('object'), - properties: z.record(z.string(), PrimitiveSchemaDefinitionSchema), - required: z.array(z.string()).optional() - }) + requestedSchema: z + .object({ + $schema: z.string().optional(), + type: z.literal('object'), + properties: z.record(z.string(), PrimitiveSchemaDefinitionSchema), + required: z.array(z.string()).optional() + }) + .passthrough() }); /** diff --git a/packages/core/test/spec.types.test.ts b/packages/core/test/spec.types.test.ts index 8ec29b096..c73b42a7a 100644 --- a/packages/core/test/spec.types.test.ts +++ b/packages/core/test/spec.types.test.ts @@ -53,6 +53,12 @@ type MakeUnknownsNotOptional = } : T; +// Targeted fix: in spec, requestedSchema needs index signature to match SDK's .passthrough() +// which allows additional JSON Schema fields like `additionalProperties` from Zod's .toJSONSchema() +type FixSpecRequestedSchema = T extends { requestedSchema: infer R } + ? Omit & { requestedSchema: R & { [x: string]: unknown } } + : T; + // Targeted fix: in spec, treat ClientCapabilities.elicitation?: object as Record type FixSpecClientCapabilities = T extends { elicitation?: object } ? Omit & { elicitation?: Record } @@ -160,11 +166,14 @@ const sdkTypeChecks = { sdk = spec; spec = sdk; }, - ElicitRequestParams: (sdk: SDKTypes.ElicitRequestParams, spec: SpecTypes.ElicitRequestParams) => { + ElicitRequestParams: ( + sdk: SDKTypes.ElicitRequestParams, + spec: FixSpecRequestedSchema | SpecTypes.ElicitRequestURLParams + ) => { sdk = spec; spec = sdk; }, - ElicitRequestFormParams: (sdk: SDKTypes.ElicitRequestFormParams, spec: SpecTypes.ElicitRequestFormParams) => { + ElicitRequestFormParams: (sdk: SDKTypes.ElicitRequestFormParams, spec: FixSpecRequestedSchema) => { sdk = spec; spec = sdk; }, From 9b4547d30357c636fe768c477c9f7db91afb0664 Mon Sep 17 00:00:00 2001 From: Dave-London Date: Wed, 11 Feb 2026 06:15:08 +0200 Subject: [PATCH 2/2] chore: add changeset for requestedSchema type fix Co-Authored-By: Claude Opus 4.6 --- .changeset/widen-requested-schema-types.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/widen-requested-schema-types.md diff --git a/.changeset/widen-requested-schema-types.md b/.changeset/widen-requested-schema-types.md new file mode 100644 index 000000000..294adb04b --- /dev/null +++ b/.changeset/widen-requested-schema-types.md @@ -0,0 +1,5 @@ +--- +"@modelcontextprotocol/core": patch +--- + +fix: widen requestedSchema type to accept additional JSON Schema fields