googleapis/mcp-toolbox · error

description is required for tool %q

Error message

description is required for tool %q

What it means

During tool initialization, the looker-health-vuum Config requires a non-empty description. The library throws this when a tool of kind looker-health-vacuum is declared without a description field, because the description is mandatory metadata for the MCP tool manifest. Initialization aborts and the toolbox fails to start (or fails to build that tool).

Source

Thrown at internal/tools/looker/lookerhealthvacuum/lookerhealthvacuum.go:76

}

type Config struct {
	tools.ConfigBase `yaml:",inline"`
	Type             string                 `yaml:"type" validate:"required"`
	Source           string                 `yaml:"source" validate:"required"`
	Parameters       map[string]any         `yaml:"parameters"`
	Annotations      *tools.ToolAnnotations `yaml:"annotations,omitempty"`
}

var _ tools.ToolConfig = Config{}

func (cfg Config) ToolConfigType() string {
	return resourceType
}

func (cfg Config) Initialize(context.Context) (tools.Tool, error) {
	if cfg.Description == "" {
		return nil, fmt.Errorf("description is required for tool %q", cfg.Name)
	}

	actionParameter := parameters.NewStringParameter("action", "The vacuum action to run. Can be 'models', or 'explores'.", parameters.WithStringRequired(true))
	projectParameter := parameters.NewStringParameter("project", "The Looker project to vacuum (optional).", parameters.WithStringDefault(""))
	modelParameter := parameters.NewStringParameter("model", "The Looker model to vacuum (optional).", parameters.WithStringDefault(""))
	exploreParameter := parameters.NewStringParameter("explore", "The Looker explore to vacuum (optional).", parameters.WithStringDefault(""))
	timeframeParameter := parameters.NewIntParameter("timeframe", "The timeframe in days to analyze.", parameters.WithIntDefault(90))
	minQueriesParameter := parameters.NewIntParameter("min_queries", "The minimum number of queries for a model or explore to be considered used.", parameters.WithIntDefault(1))

	allParameters := parameters.Parameters{
		actionParameter,
		projectParameter,
		modelParameter,
		exploreParameter,
		timeframeParameter,
		minQueriesParameter,
	}

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Add a non-empty description field to the looker-health-vacuum tool definition in your config
  2. If generating config programmatically, validate that description is set before calling Initialize
  3. Restart/rebuild the toolbox after fixing the YAML and check startup logs for the next validation error

Example fix

// before (toolbox.yaml)
tools:
  vacuum:
    kind: looker-health-vacuum
    source: my-looker
// after
tools:
  vacuum:
    kind: looker-health-vacuum
    source: my-looker
    description: Runs vacuum cleanup actions on Looker models or explores
Defensive patterns

Strategy: validation

Validate before calling

// pre-validate config before Initialize
if cfg.Description == "" {
	return errors.New("looker-health-vacuum tool requires a description")
}
if err := yaml.Unmarshal(raw, &cfg); err != nil {
	return err
}

Try / catch

tool, err := cfg.Initialize(ctx)
if err != nil && strings.Contains(err.Error(), "description is required") {
	return fmt.Errorf("config error: add 'description' to tool %q: %w", cfg.Name, err)
}

Prevention

When it happens

Trigger: cfg.Description == "" when Config.Initialize runs — the tool YAML omits the description field or sets it to an empty string.

Common situations: Hand-written toolbox.yaml missing the description key for the looker-health-vacuum tool; templating/config generation that drops empty fields; copy-pasting a tool definition without filling in the description.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05). Data as JSON: /api/errors/b7ad1a1b9a85f27e. Report an issue: GitHub.