--- title: elicitation sidebarTitle: elicitation --- # `fastmcp.server.elicitation` ## Functions ### `get_elicitation_schema` ```python get_elicitation_schema(response_type: type[T]) -> dict[str, Any] ``` Get the schema for an elicitation response. **Args:** - `response_type`: The type of the response ### `validate_elicitation_json_schema` ```python validate_elicitation_json_schema(schema: dict[str, Any]) -> None ``` Validate that a JSON schema follows MCP elicitation requirements. This ensures the schema is compatible with MCP elicitation requirements: - Must be an object schema - Must only contain primitive field types (string, number, integer, boolean) - Must be flat (no nested objects or arrays of objects) - Allows const fields (for Literal types) and enum fields (for Enum types) - Only primitive types and their nullable variants are allowed **Args:** - `schema`: The JSON schema to validate **Raises:** - `TypeError`: If the schema doesn't meet MCP elicitation requirements ## Classes ### `ElicitationJsonSchema` Custom JSON schema generator for MCP elicitation that always inlines enums. MCP elicitation requires inline enum schemas without $ref/$defs references. This generator ensures enums are always generated inline for compatibility. Optionally adds enumNames for better UI display when available. **Methods:** #### `generate_inner` ```python generate_inner(self, schema: core_schema.CoreSchema) -> JsonSchemaValue ``` Override to prevent ref generation for enums. #### `enum_schema` ```python enum_schema(self, schema: core_schema.EnumSchema) -> JsonSchemaValue ``` Generate inline enum schema with optional enumNames for better UI. If enum members have a _display_name_ attribute or custom __str__, we'll include enumNames for better UI representation. ### `AcceptedElicitation` Result when user accepts the elicitation. ### `ScalarElicitationType`