diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b5d916e1d..97dded91f 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -384,9 +384,18 @@ def convert_openapi_to_tool_payload(openapi_spec): for param in operation.get("parameters", []): param_name = param["name"] param_schema = param.get("schema", {}) + description = param_schema.get("description", "") + if not description: + description = param.get("description") or "" + if param_schema.get("enum") and isinstance( + param_schema.get("enum"), list + ): + description += ( + f". Possible values: {', '.join(param_schema.get('enum'))}" + ) tool["parameters"]["properties"][param_name] = { "type": param_schema.get("type"), - "description": param_schema.get("description", ""), + "description": description, } if param.get("required"): tool["parameters"]["required"].append(param_name) diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 022a901c1..80c2b2902 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1257,9 +1257,13 @@ export const convertOpenApiToToolPayload = (openApiSpec) => { // Extract path and query parameters if (operation.parameters) { operation.parameters.forEach((param) => { + let description = param.schema.description || param.description || ''; + if (param.schema.enum && Array.isArray(param.schema.enum)) { + description += `. Possible values: ${param.schema.enum.join(', ')}`; + } tool.parameters.properties[param.name] = { type: param.schema.type, - description: param.schema.description || '' + description: description }; if (param.required) {