googleapis/mcp-toolbox · error
description is required for tool %q
Error message
description is required for tool %q
What it means
Config.Initialize for the Looker Conversational Analytics tool requires a non-empty Description field, since MCP tool manifests must advertise what the tool does. If Config.Name is set but Description is empty, Initialize refuses to build the tool and returns this error naming the tool.
Source
Thrown at internal/tools/looker/lookerconversationalanalytics/lookerconversationalanalytics.go:147
}
type Config struct {
tools.ConfigBase `yaml:",inline"`
Type string `yaml:"type" validate:"required"`
Source string `yaml:"source" validate:"required"`
Annotations *tools.ToolAnnotations `yaml:"annotations,omitempty"`
}
// validate interface
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)
}
userQueryParameter := parameters.NewStringParameter("user_query_with_context", "The user's question, potentially including conversation history and system instructions for context.")
exploreRefsDescription := `An Array of at least one and up to 5 explore references like [{'model': 'MODEL_NAME', 'explore': 'EXPLORE_NAME'}]`
exploreRefsParameter := parameters.NewArrayParameter(
"explore_references",
exploreRefsDescription,
parameters.NewMapParameter(
"explore_reference",
"An explore reference like {'model': 'MODEL_NAME', 'explore': 'EXPLORE_NAME'}",
"",
),
)
params := parameters.Parameters{userQueryParameter, exploreRefsParameter}
// finish tool setupView on GitHub (pinned to 8cc6e09de2)
Solutions
- Add a non-empty description field to the tool's YAML config
- Verify the config key is spelled 'description' at the correct nesting level
- Check that your config loader isn't overriding/blanking the description
- Validate the tool config before server startup
Example fix
// before
tools:
my_tool:
kind: looker-conversational-analytics
name: my_tool
// after
tools:
my_tool:
kind: looker-conversational-analytics
name: my_tool
description: "Answer questions about Looker data using conversational analytics" Defensive patterns
Strategy: validation
Validate before calling
// config check before server start
if cfg.Description == "" {
return fmt.Errorf("tool %q requires a description", cfg.Name)
} Prevention
- Always include a description for every tool in YAML configs
- Run config validation/linting before deploying the server
- Use config templates that default descriptions to non-empty placeholders
When it happens
Trigger: Declaring a looker-conversational-analytics tool in YAML with a name but omitting the description field, then starting the toolbox server.
Common situations: Hand-written tool configs missing the required description; templated config generation leaving description blank; copying a minimal config example that elides description.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- unable to parse Timeout string as time.Duration: %s
- description is required for tool %q
- description is required for tool %q
- description is required for tool %q
- doc %d: unexpected non-string key in input: %v
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/b96acb1a226f68ab.
Report an issue: GitHub.