diff --git a/backend/open_webui/utils/tools.py b/backend/open_webui/utils/tools.py index b2f95a829..6a55a9536 100644 --- a/backend/open_webui/utils/tools.py +++ b/backend/open_webui/utils/tools.py @@ -697,9 +697,10 @@ def convert_openapi_to_tool_payload(openapi_spec): "parameters": {"type": "object", "properties": {}, "required": []}, } - # Extract path and query parameters for param in operation.get("parameters", []): - param_name = param["name"] + param_name = param.get("name") + if not param_name: + continue param_schema = param.get("schema", {}) description = param_schema.get("description", "") if not description: @@ -971,8 +972,10 @@ async def execute_tool_server( body_params = {} for param in operation.get("parameters", []): - param_name = param["name"] - param_in = param["in"] + param_name = param.get("name") + if not param_name: + continue + param_in = param.get("in") if param_name in params: if param_in == "path": path_params[param_name] = params[param_name] diff --git a/src/lib/apis/index.ts b/src/lib/apis/index.ts index 8f35fbf88..92c28e1d9 100644 --- a/src/lib/apis/index.ts +++ b/src/lib/apis/index.ts @@ -449,8 +449,9 @@ export const executeToolServer = async ( if (operation.parameters) { operation.parameters.forEach((param: any) => { - const paramName = param.name; - const paramIn = param.in; + const paramName = param?.name; + if (!paramName) return; + const paramIn = param?.in; if (params.hasOwnProperty(paramName)) { if (paramIn === 'path') { pathParams[paramName] = params[paramName]; @@ -1674,7 +1675,7 @@ export interface ModelMeta { profile_image_url?: string; } -export interface ModelParams {} +export interface ModelParams { } export type GlobalModelConfig = ModelConfig[]; diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 3577eb004..c4046f05d 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -1277,17 +1277,20 @@ 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(', ')}`; + const paramName = param?.name; + if (!paramName) return; + const paramSchema = param?.schema ?? {}; + let description = paramSchema.description || param.description || ''; + if (paramSchema.enum && Array.isArray(paramSchema.enum)) { + description += `. Possible values: ${paramSchema.enum.join(', ')}`; } - tool.parameters.properties[param.name] = { - type: param.schema.type, + tool.parameters.properties[paramName] = { + type: paramSchema.type, description: description }; if (param.required) { - tool.parameters.required.push(param.name); + tool.parameters.required.push(paramName); } }); }