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-listgraphs tool checks that `cfg.Description` is set; a description is required for every tool because it is published in the tool manifest consumed by LLM clients. An empty description aborts Initialize with this error.

Source

Thrown at internal/tools/falkordb/falkordblistgraphs/falkordblistgraphs.go:67

}

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)
	}

	params := parameters.Parameters{}

	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
}

// validate interface
var _ tools.Tool = Tool{}

type Tool struct {

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Add a non-empty `description` field to the falkordb-listgraphs tool
  2. Verify indentation places description inside the tool mapping
  3. Regenerate or hand-write the description and reload the config
  4. Confirm via the toolbox tool list that the error is gone

Example fix

// before (tools.yaml)
tools:
  list-graphs:
    kind: falkordb-listgraphs
    source: falkordb
// after
tools:
  list-graphs:
    kind: falkordb-listgraphs
    source: falkordb
    description: Lists all graphs available in the FalkorDB database.
Defensive patterns

Strategy: validation

Validate before calling

if t.Description == "" {
    return fmt.Errorf("tool %q (falkordb-listgraphs) requires a description", t.Name)
}

Type guard

func hasNonEmptyDesc(t ToolEntry) bool { return len(strings.TrimSpace(t.Description)) > 0 }

Try / catch

if _, err := cfg.Initialize(ctx); err != nil {
    if strings.Contains(err.Error(), "description is required") {
        return fmt.Errorf("missing description; see tool named in error: %w", err)
    }
    return err
}

Prevention

When it happens

Trigger: A `falkordb-listgraphs` tool entry in tools.yaml with the `description` field absent or empty.

Common situations: Adding a no-parameter tool and assuming description is optional for simple tools; scaffolding tools quickly in CI and filling descriptions later; YAML anchors that resolve to empty strings.

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