@@ -278,18 +278,30 @@ def resolve_type(prop_details: dict[str, Any]) -> type:
278278 python_type = resolve_type (prop_details )
279279 description = prop_details .get ("description" , "" )
280280
281+ # Build field kwargs (description, array items schema, etc.)
282+ field_kwargs : dict [str , Any ] = {}
283+ if description :
284+ field_kwargs ["description" ] = description
285+
286+ # Preserve array items schema if present
287+ if prop_details .get ("type" ) == "array" and "items" in prop_details :
288+ items_schema = prop_details ["items" ]
289+ if items_schema and items_schema != {}:
290+ field_kwargs ["json_schema_extra" ] = {"items" : items_schema }
291+
281292 # Create field definition for create_model
282293 if prop_name in required :
283- field_definitions [prop_name ] = (
284- (python_type , Field (description = description )) if description else (python_type , ...)
285- )
294+ if field_kwargs :
295+ field_definitions [prop_name ] = (python_type , Field (** field_kwargs ))
296+ else :
297+ field_definitions [prop_name ] = (python_type , ...)
286298 else :
287299 default_value = prop_details .get ("default" , None )
288- field_definitions [ prop_name ] = (
289- ( python_type , Field ( default = default_value , description = description ))
290- if description
291- else ( python_type , default_value )
292- )
300+ field_kwargs [ "default" ] = default_value
301+ if field_kwargs and any ( k != "default" for k in field_kwargs ):
302+ field_definitions [ prop_name ] = ( python_type , Field ( ** field_kwargs ))
303+ else :
304+ field_definitions [ prop_name ] = ( python_type , default_value )
293305
294306 return create_model (f"{ tool .name } _input" , ** field_definitions )
295307
0 commit comments