diff --git a/.changeset/zod-elicit-compat.md b/.changeset/zod-elicit-compat.md new file mode 100644 index 000000000..5274b825f --- /dev/null +++ b/.changeset/zod-elicit-compat.md @@ -0,0 +1,5 @@ +--- +"@modelcontextprotocol/core": patch +--- + +Allow `$schema` and `additionalProperties` in elicitation `requestedSchema` for Zod `.toJSONSchema()` compatibility diff --git a/packages/core/src/types/schemas.ts b/packages/core/src/types/schemas.ts index 309b6ade2..dba423361 100644 --- a/packages/core/src/types/schemas.ts +++ b/packages/core/src/types/schemas.ts @@ -1862,9 +1862,11 @@ export const ElicitRequestFormParamsSchema = TaskAugmentedRequestParamsSchema.ex * Only top-level properties are allowed, without nesting. */ requestedSchema: z.object({ + $schema: z.string().optional(), type: z.literal('object'), properties: z.record(z.string(), PrimitiveSchemaDefinitionSchema), - required: z.array(z.string()).optional() + required: z.array(z.string()).optional(), + additionalProperties: z.boolean().optional() }) }); diff --git a/packages/core/src/types/spec.types.ts b/packages/core/src/types/spec.types.ts index ba849c546..6e35eaaea 100644 --- a/packages/core/src/types/spec.types.ts +++ b/packages/core/src/types/spec.types.ts @@ -1740,6 +1740,7 @@ export interface Tool extends BaseMetadata, Icons { type: 'object'; properties?: { [key: string]: JSONValue }; required?: string[]; + additionalProperties?: boolean; }; /** @@ -1759,6 +1760,7 @@ export interface Tool extends BaseMetadata, Icons { type: 'object'; properties?: { [key: string]: JSONValue }; required?: string[]; + additionalProperties?: boolean; }; /** @@ -2801,6 +2803,7 @@ export interface ElicitRequestFormParams extends TaskAugmentedRequestParams { [key: string]: PrimitiveSchemaDefinition; }; required?: string[]; + additionalProperties?: boolean; }; }