{"record":{"id":"b351cdf4696b2772","repo":"BerriAI/litellm","slug":"name-is-required-for-tool-name","errorCode":null,"errorMessage":"name is required for tool {name}","messagePattern":"name is required for tool (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"litellm/proxy/_experimental/mcp_server/tool_registry.py","lineNumber":130,"sourceCode":"            input_schema = tool_config.get(\"input_schema\", {})\n            handler_name = tool_config.get(\"handler\")\n\n            if not all([name, description, handler_name]):\n                continue\n\n            # Try to resolve the handler\n            # First check if it's a module path (e.g., \"module.submodule.function\")\n            if handler_name is None:\n                raise ValueError(f\"handler is required for tool {name}\")\n            handler = get_instance_fn(handler_name, config_file_path)\n\n            if handler is None:\n                verbose_logger.warning(\"Warning: Could not find handler %s for tool %s\", handler_name, name)\n                continue\n\n            # Register the tool\n            if name is None:\n                raise ValueError(f\"name is required for tool {name}\")\n            if description is None:\n                raise ValueError(f\"description is required for tool {name}\")\n\n            self.register_tool(\n                name=name,\n                description=description,\n                input_schema=input_schema,\n                handler=handler,\n            )\n        verbose_logger.debug(\"all registered tools: %s\", json.dumps(self.tools, indent=4, default=str))\n\n\nglobal_mcp_tool_registry: Final = MCPToolRegistry()\n","sourceCodeStart":112,"sourceCodeEnd":144,"githubUrl":"https://github.com/BerriAI/litellm/blob/77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8/litellm/proxy/_experimental/mcp_server/tool_registry.py#L112-L144","documentation":"Registry loader validation for tools declared in config: a tool entry reached registration without a name. This generic ValueError is raised while parsing the config list, before any handler resolution.","triggerScenarios":"Thrown at litellm/proxy/_experimental/mcp_server/tool_registry.py:130 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add a 'name' field to the tool entry in mcp_tools config."],"exampleFix":"mcp_tools: [{name: 'my_tool', ...}]","handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"77b7c6c40c0c5aa5fbcb1d6a1825ac39ca8829b8","analyzedAt":"2026-08-18T11:44:31.656Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}