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 falkordb-schema tool requires a non-empty `description`; the description is required metadata for the LLM-facing tool manifest. Initialize fails with this error before applying defaults (such as SampleSize), so the tool does not load.

Source

Thrown at internal/tools/falkordb/falkordbschema/falkordbschema.go:80

type Config struct {
	tools.ConfigBase `yaml:",inline"`
	Type             string                 `yaml:"type" validate:"required"`
	Source           string                 `yaml:"source" validate:"required"`
	SampleSize       int                    `yaml:"sampleSize"`
	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)
	}

	params := parameters.Parameters{}

	if cfg.SampleSize <= 0 {
		cfg.SampleSize = defaultSampleSize
	}

	return Tool{
		BaseTool: tools.NewBaseTool(
			cfg,
			tools.GetAnnotationsOrDefault(cfg.Annotations, tools.NewReadOnlyAnnotations),
			tools.Manifest{Description: cfg.Description, Parameters: params.Manifest(), AuthRequired: cfg.AuthRequired},
			params,
		),
	}, nil
}

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Set a non-empty `description` on the falkordb-schema tool config
  2. If constructing Config in Go, populate cfg.Description before calling Initialize
  3. Check that YAML templating didn't emit an empty value for description
  4. Reload and confirm the schema tool registers

Example fix

// before (tools.yaml)
tools:
  schema:
    kind: falkordb-schema
    source: falkordb
// after
tools:
  schema:
    kind: falkordb-schema
    source: falkordb
    description: Introspects the FalkorDB graph schema (node labels, relationship types, properties).
Defensive patterns

Strategy: validation

Validate before calling

if strings.TrimSpace(cfg.Description) == "" {
    return fmt.Errorf("falkordb-schema config for %q must set Description", cfg.Name)
}

Type guard

func schemaConfigReady(cfg Config) bool { return cfg.Description != "" && cfg.Source != "" }

Try / catch

tool, err := cfg.Initialize(ctx)
if err != nil && strings.Contains(err.Error(), "description is required") {
    return nil, fmt.Errorf("set description on falkordb-schema tool %q", cfg.Name)
}

Prevention

When it happens

Trigger: A `falkordb-schema` tool entry in tools.yaml missing `description` or with `description: ""`; programmatic Config construction leaving Description unset.

Common situations: Hand-rolled Config structs in Go tests omitting Description; YAML configs generated from schemas that treat description as optional; stripping descriptions when sanitizing configs for sharing.

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/5ae02da43c506953. Report an issue: GitHub.