{"record":{"id":"a32d1b2163273806","repo":"microsoft/semantic-kernel","slug":"the-option-key-bindingtype-queue-name-is-requi","errorCode":null,"errorMessage":"The option key '{bindingType}.queue_name' is required.","messagePattern":"The option key '(.+?)\\.queue_name' is required\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"dotnet/src/Agents/AzureAI/Extensions/AgentToolDefinitionExtensions.cs","lineNumber":185,"sourceCode":"                configurations.Add(new VectorStoreConfigurations(storeName, new VectorStoreConfiguration(dataSources)));\n            }\n        }\n\n        return configurations;\n    }\n\n    private static AzureFunctionBinding GetAzureFunctionBinding(this AgentToolDefinition agentToolDefinition, string bindingType)\n    {\n        Verify.NotNull(agentToolDefinition.Options);\n\n        var binding = agentToolDefinition.GetRequiredOption<Dictionary<object, object>>(bindingType);\n        if (!binding.TryGetValue(\"storage_service_endpoint\", out var endpointValue) || endpointValue is not string storageServiceEndpoint)\n        {\n            throw new ArgumentException($\"The option key '{bindingType}.storage_service_endpoint' is required.\");\n        }\n        if (!binding.TryGetValue(\"queue_name\", out var nameValue) || nameValue is not string queueName)\n        {\n            throw new ArgumentException($\"The option key '{bindingType}.queue_name' is required.\");\n        }\n\n        return new AzureFunctionBinding(new AzureFunctionStorageQueue(storageServiceEndpoint, queueName));\n    }\n\n    internal static int? GetTopK(this AgentToolDefinition agentToolDefinition)\n    {\n        return agentToolDefinition.Options?.TryGetValue(\"top_k\", out var topKValue) ?? false\n            ? int.Parse((string)topKValue!)\n            : null;\n    }\n\n    internal static string? GetFilter(this AgentToolDefinition agentToolDefinition)\n    {\n        return agentToolDefinition.Options?.TryGetValue(\"filter\", out var filterValue) ?? false\n            ? filterValue as string\n            : null;\n    }","sourceCodeStart":167,"sourceCodeEnd":203,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/dotnet/src/Agents/AzureAI/Extensions/AgentToolDefinitionExtensions.cs#L167-L203","documentation":"Thrown by GetAzureFunctionBinding after storage_service_endpoint has been validated. The same binding dictionary must also contain a 'queue_name' key whose value is a string; otherwise ArgumentException is thrown. The queue name is the Storage queue the function binding reads from.","triggerScenarios":"An Azure Function tool binding option dictionary has storage_service_endpoint but is missing 'queue_name', or queue_name is non-string.","commonSituations":"YAML template includes endpoint but omits queue_name; typo 'queuename'.","solutions":["Add 'queue_name' (string) under the binding-type key in the tool options.","Ensure it matches an existing Storage queue."],"exampleFix":"// before\nstorage_queue:\n  storage_service_endpoint: https://mystorage.queue.core.windows.net\n  # queue_name missing -> throws 166\n\n// after\nstorage_queue:\n  storage_service_endpoint: https://mystorage.queue.core.windows.net\n  queue_name: myqueue","handlingStrategy":"validation","validationCode":"var binding = tool.GetRequiredOption<Dictionary<object, object>>(bindingType);\nif (!binding.TryGetValue(\"queue_name\", out var q) || q is not string)\n    throw new ArgumentException($\"{bindingType}.queue_name (string) is required.\");","typeGuard":"static bool HasQueueName(Dictionary<object, object> b) =>\n    b.TryGetValue(\"queue_name\", out var q) && q is string s && !string.IsNullOrEmpty(s);","tryCatchPattern":null,"preventionTips":["Always set queue_name together with storage_service_endpoint.","Double-check Azure Function tool binding completeness."],"tags":["validation","azure-function","agent-tool","configuration"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}