googleapis/mcp-toolbox · error
toolset %q not found
Error message
toolset %q not found
What it means
`buildSkillContents` throws "toolset %q not found" when the `--toolset` flag passed to `skills-generate` names a toolset that is not present in the initialized primitive manager (`primitiveMgr.GetGroup(c.toolset)` fails). Toolsets are registered as groups keyed by their config name, so an unknown or uninitialized name produces this error and stops skill generation.
Source
Thrown at cmd/internal/skills/command.go:309
}
}
return groupTools
}
if c.group != "" {
g, ok := primitiveMgr.GetGroup(c.group)
if !ok {
return nil, fmt.Errorf("group %q not found", c.group)
}
skillsToContents[c.name] = skillContent{tools: getToolsFromGroup(g), description: c.descriptionFor(g)}
return skillsToContents, nil
}
if c.toolset != "" {
g, ok := primitiveMgr.GetGroup(c.toolset)
if !ok {
return nil, fmt.Errorf("toolset %q not found", c.toolset)
}
skillsToContents[c.name] = skillContent{tools: getToolsFromGroup(g), description: c.description}
return skillsToContents, nil
}
if len(groupsMap) <= 1 {
// Default to all tools if no named group found. The default nameless
// group's description (if any) takes precedence over the flag.
skillsToContents[c.name] = skillContent{tools: toolsMap, description: c.descriptionFor(groupsMap[""])}
return skillsToContents, nil
}
// One skill per group
for gName, g := range groupsMap {
if gName == "" {
continue
}View on GitHub (pinned to 8cc6e09de2)
Solutions
- Check the `toolsets:` keys in your config file and match `--toolset` exactly (case-sensitive)
- Use `--group` instead if the target is a group, not a toolset
- Omit `--toolset` entirely to generate a skill from all tools
- Verify the loaded config file is the one containing the toolset (`--config-file` path)
Example fix
// before toolbox skills-generate --toolset myTools // after (toolset key in config is "my-tools") toolbox skills-generate --toolset my-tools
Defensive patterns
Strategy: validation
Validate before calling
// Ensure the toolset key exists in the config
b, _ := os.ReadFile(cfgPath)
var cfg struct { Toolsets map[string]yaml.Node `yaml:"toolsets"` }
_ = yaml.Unmarshal(b, &cfg)
if _, ok := cfg.Toolsets["my-tools"]; !ok {
return fmt.Errorf("toolset %q not defined in %s", "my-tools", cfgPath)
} Try / catch
if _, ok := primitiveMgr.GetGroup(toolsetName); !ok {
return fmt.Errorf("toolset %q not found; available: %v", toolsetName, primitiveMgr.GroupNames())
} Prevention
- Copy-paste the toolset key directly from the config to avoid typos
- Don't pass a group name to `--toolset` — the flags are distinct and mutually exclusive
- Omit `--toolset` when you want all tools in one skill
- Grep the config for the toolset name before running in automation
When it happens
Trigger: `toolbox skills-generate --toolset <name>` where `<name>` is not a key in the config's `toolsets:` section (or equivalent prebuilt toolset), is misspelled, or the toolset failed to initialize; note the same `GetGroup` lookup backs both `--group` and `--toolset`.
Common situations: Typo in toolset name; passing a group name to `--toolset`; using a toolset removed/renamed in a newer config; forgetting that when neither flag is given all tools are included, so this only fires when the flag is set.
Related errors
- group %q not found
- unable to retrieve %s source for tool %q
- tool does not exist: %s
- failed to initialize resources: %w
- tool %q not found
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/378b5184585e431a.
Report an issue: GitHub.