{"record":{"id":"ed83411e7acfad2a","repo":"agentscope-ai/agentscope","slug":"cannot-find-group-group-name-in-toolkit-only","errorCode":null,"errorMessage":"Cannot find group '{group_name}' in toolkit, only {[_.name for _ in self.tool_groups]} are available.","messagePattern":"Cannot find group '(.+?)' in toolkit, only (.+?) are available\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/agentscope/tool/_toolkit.py","lineNumber":673,"sourceCode":"                for new_tool in new_tools:\n                    if new_tool.name in existing_tools:\n                        logger.warning(\n                            \"Duplicate tool name '%s' found in group '%s', \"\n                            \"overwriting it.\",\n                            new_tool.name,\n                            group.name,\n                        )\n                        # override the existing tool\n                        group.tools = [\n                            t for t in group.tools if t.name != new_tool.name\n                        ] + [new_tool]\n                    else:\n                        group.tools.append(new_tool)\n                        existing_tools.add(new_tool.name)\n\n                return\n\n        raise ValueError(\n            f\"Cannot find group '{group_name}' in toolkit, only \"\n            f\"{[_.name for _ in self.tool_groups]} are available.\",\n        )\n\n    async def remove_tool(self, tool_name: str | list[str]) -> None:\n        \"\"\"Remove tool from the toolkit on-the-fly.\n\n        Args:\n            tool_name (`str | list[str]`):\n                The name of the tool to be removed.\n        \"\"\"\n        if isinstance(tool_name, str):\n            tool_name = [tool_name]\n\n        for group in self.tool_groups:\n            group.tools = [\n                tool for tool in group.tools if tool.name not in tool_name\n            ]","sourceCodeStart":655,"sourceCodeEnd":691,"githubUrl":"https://github.com/agentscope-ai/agentscope/blob/e90f1c7592896cc95f6e5ee506194f533378247d/src/agentscope/tool/_toolkit.py#L655-L691","documentation":"Toolkit.add_tool raises ValueError when the group_name argument does not match any registered tool group. The error lists the available group names so you can see what the toolkit actually knows about.","triggerScenarios":"Calling await toolkit.add_tool(tool, group_name='X') where 'X' is not among [g.name for g in toolkit.tool_groups]; e.g. 'search' when only a 'default' group exists.","commonSituations":"Agents adding tools on the fly (e.g. memory tools in ReAct flows) targeting a group name that was never created; typos or case mismatches in group names; assuming a default group name exists when a custom set was passed.","solutions":["Use one of the group names printed in the error message","Create the group first: add a ToolGroup(name='X', tools=[]) to the Toolkit before add_tool","Guard by checking `[g.name for g in toolkit.tool_groups]` before calling add_tool"],"exampleFix":"# before\nawait toolkit.add_tool(mem_tool, group_name='memory')  # group doesn't exist\n# after\ntoolkit = Toolkit(tool_groups=[ToolGroup(name='memory', tools=[]), ...])\nawait toolkit.add_tool(mem_tool, group_name='memory')","handlingStrategy":"validation","validationCode":"available = [g.name for g in toolkit.tool_groups]\nif group_name not in available:\n    group_name = available[0]  # or raise with a clear message\nawait toolkit.add_tool(tool, group_name=group_name)","typeGuard":null,"tryCatchPattern":"try:\n    await toolkit.add_tool(tool, group_name=group_name)\nexcept ValueError as e:\n    # parse available names from e and retry with a valid group","preventionTips":["Define group-name constants used both when creating groups and when calling add_tool","Create empty target groups up-front in toolkit construction"],"tags":["toolkit","add-tool","group-name","config"],"backgroundTag":"unknown-group-name","analyzedSha":"e90f1c7592896cc95f6e5ee506194f533378247d","analyzedAt":"2026-08-28T18:24:12.087Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}