googleapis/mcp-toolbox · error
description is required for tool %q
Error message
description is required for tool %q
What it means
Initialize() for arcadedb-execute-sql requires a non-empty description. Since the description drives LLM tool selection, an empty one causes tool construction to fail with this error identifying the tool by name.
Source
Thrown at internal/tools/arcadedb/arcadedbexecutesql/arcadedbexecutesql.go:66
}
type Config struct {
tools.ConfigBase `yaml:",inline"`
Type string `yaml:"type" validate:"required"`
Source string `yaml:"source" validate:"required"`
ReadOnly bool `yaml:"readOnly"`
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)
}
sqlParameter := parameters.NewStringParameter("sql", "The SQL statement to execute.")
queryParamsParameter := parameters.NewMapParameter(
"params",
"Optional query parameters to use with the SQL statement.",
"",
parameters.WithMapDefault(map[string]any{}),
)
dryRunParameter := parameters.NewBooleanParameter(
"dry_run",
"If set to true, the SQL will be validated and execution plan metadata will be returned without running it. Defaults to false.",
parameters.WithBooleanDefault(false),
)
params := parameters.Parameters{sqlParameter, queryParamsParameter, dryRunParameter}
allParameters, paramManifest, err := parameters.ProcessParameters(nil, params)
if err != nil {View on GitHub (pinned to 8cc6e09de2)
Solutions
- Add a non-empty description field to the arcadedb-execute-sql tool config.
- Check that variable/env interpolation for description yields actual text.
- Validate your config against the documented tool schema before startup.
Example fix
// before
tools:
run-sql:
kind: arcadedb-execute-sql
source: my-arcadedb
// after
tools:
run-sql:
kind: arcadedb-execute-sql
source: my-arcadedb
description: Execute a SQL statement against the ArcadeDB database. Defensive patterns
Strategy: validation
Validate before calling
if cfg.Description == "" {
return errors.New("arcadedb-execute-sql requires a non-empty description")
}
tool, err := cfg.Initialize(ctx) Try / catch
tool, err := cfg.Initialize(ctx)
if err != nil {
if strings.Contains(err.Error(), "description is required") {
// fix the description field and retry
}
return err
} Prevention
- Include description in every tool config template.
- Verify env/variable interpolation does not blank the description.
- Add a startup assertion that all tool configs have descriptions before Initialize.
When it happens
Trigger: Creating an arcadedb-execute-sql tool config with no description field or description: "", then calling Initialize() during server startup.
Common situations: Minimal YAML tool definitions missing description; templated configs with empty substituted values; edits that accidentally removed the line.
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
- description is required for tool %q
- description is required for tool %q
- description is required for tool %q
- `introspectionEndpoint` is not allowed when `mcpEnabled` is
- `introspectionMethod` is not allowed when `mcpEnabled` is fa
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/89863f1244329e2c.
Report an issue: GitHub.