{"record":{"id":"5ae02da43c506953","repo":"googleapis/mcp-toolbox","slug":"description-is-required-for-tool-q-5ae02d","errorCode":null,"errorMessage":"description is required for tool %q","messagePattern":"description is required for tool %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/tools/falkordb/falkordbschema/falkordbschema.go","lineNumber":80,"sourceCode":"\ntype Config struct {\n\ttools.ConfigBase `yaml:\",inline\"`\n\tType             string                 `yaml:\"type\" validate:\"required\"`\n\tSource           string                 `yaml:\"source\" validate:\"required\"`\n\tSampleSize       int                    `yaml:\"sampleSize\"`\n\tAnnotations      *tools.ToolAnnotations `yaml:\"annotations,omitempty\"`\n}\n\n// validate interface\nvar _ tools.ToolConfig = Config{}\n\nfunc (cfg Config) ToolConfigType() string {\n\treturn resourceType\n}\n\nfunc (cfg Config) Initialize(context.Context) (tools.Tool, error) {\n\tif cfg.Description == \"\" {\n\t\treturn nil, fmt.Errorf(\"description is required for tool %q\", cfg.Name)\n\t}\n\n\tparams := parameters.Parameters{}\n\n\tif cfg.SampleSize <= 0 {\n\t\tcfg.SampleSize = defaultSampleSize\n\t}\n\n\treturn Tool{\n\t\tBaseTool: tools.NewBaseTool(\n\t\t\tcfg,\n\t\t\ttools.GetAnnotationsOrDefault(cfg.Annotations, tools.NewReadOnlyAnnotations),\n\t\t\ttools.Manifest{Description: cfg.Description, Parameters: params.Manifest(), AuthRequired: cfg.AuthRequired},\n\t\t\tparams,\n\t\t),\n\t}, nil\n}\n","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/tools/falkordb/falkordbschema/falkordbschema.go#L62-L98","documentation":"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.","triggerScenarios":"A `falkordb-schema` tool entry in tools.yaml missing `description` or with `description: \"\"`; programmatic Config construction leaving Description unset.","commonSituations":"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.","solutions":["Set a non-empty `description` on the falkordb-schema tool config","If constructing Config in Go, populate cfg.Description before calling Initialize","Check that YAML templating didn't emit an empty value for description","Reload and confirm the schema tool registers"],"exampleFix":"// before (tools.yaml)\ntools:\n  schema:\n    kind: falkordb-schema\n    source: falkordb\n// after\ntools:\n  schema:\n    kind: falkordb-schema\n    source: falkordb\n    description: Introspects the FalkorDB graph schema (node labels, relationship types, properties).","handlingStrategy":"validation","validationCode":"if strings.TrimSpace(cfg.Description) == \"\" {\n    return fmt.Errorf(\"falkordb-schema config for %q must set Description\", cfg.Name)\n}","typeGuard":"func schemaConfigReady(cfg Config) bool { return cfg.Description != \"\" && cfg.Source != \"\" }","tryCatchPattern":"tool, err := cfg.Initialize(ctx)\nif err != nil && strings.Contains(err.Error(), \"description is required\") {\n    return nil, fmt.Errorf(\"set description on falkordb-schema tool %q\", cfg.Name)\n}","preventionTips":["Populate Description when constructing Config in Go code or YAML before Initialize","Add Initialize-every-tool unit tests to catch empty descriptions early","When sanitizing configs for sharing, replace descriptions with placeholders instead of deleting them","Note that validation runs before defaults (e.g. SampleSize), so other fields won't mask it"],"tags":["go","configuration","validation","yaml"],"backgroundTag":"missing-required-argument","analyzedSha":"8cc6e09de2ad7b8bffc77751799585a1401a48eb","analyzedAt":"2026-09-05T01:10:36.887Z","contentChangedAt":"2026-09-05T01:10:36.887Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}