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

  1. Add a non-empty description field to the arcadedb-execute-sql tool config.
  2. Check that variable/env interpolation for description yields actual text.
  3. 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

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


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