{"record":{"id":"7a46652ceb8eb9af","repo":"googleapis/mcp-toolbox","slug":"description-is-required-for-tool-q-7a4665","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/mindsdb/mindsdbsql/mindsdbsql.go","lineNumber":69,"sourceCode":"type Config struct {\n\ttools.ConfigBase   `yaml:\",inline\"`\n\tType               string                 `yaml:\"type\" validate:\"required\"`\n\tSource             string                 `yaml:\"source\" validate:\"required\"`\n\tStatement          string                 `yaml:\"statement\" validate:\"required\"`\n\tParameters         parameters.Parameters  `yaml:\"parameters\"`\n\tTemplateParameters parameters.Parameters  `yaml:\"templateParameters\"`\n\tAnnotations        *tools.ToolAnnotations `yaml:\"annotations,omitempty\"`\n}\n\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\tallParameters, paramManifest, err := parameters.ProcessParameters(cfg.TemplateParameters, cfg.Parameters)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn Tool{\n\t\tBaseTool: tools.NewBaseTool(\n\t\t\tcfg,\n\t\t\ttools.GetAnnotationsOrDefault(cfg.Annotations, tools.NewDestructiveAnnotations),\n\t\t\ttools.Manifest{Description: cfg.Description, Parameters: paramManifest, AuthRequired: cfg.AuthRequired},\n\t\t\tallParameters,\n\t\t),\n\t}, nil\n}\n\nvar _ tools.Tool = Tool{}","sourceCodeStart":51,"sourceCodeEnd":87,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/tools/mindsdb/mindsdbsql/mindsdbsql.go#L51-L87","documentation":"Initialize rejects a tool configuration whose 'description' field is empty. Description is mandatory for this tool type (it feeds the LLM tool manifest), so the error fires during startup when the tools.yaml entry omits or leaves blank the 'description' key.","triggerScenarios":"Defining a tool with kind `mindsdb-sql` without a `description` (or with an empty string) in tools.yaml; Initialize runs during config parsing.","commonSituations":"Omitting description while hand-editing YAML; a template/generator that leaves description blank; removing a description during refactoring.","solutions":["Add a meaningful non-empty `description` to the mindsdb-sql tool config","If tools are generated from templates, assert description is set before writing the YAML","Validate the config locally before deploying"],"exampleFix":"// before\nquery:\n  kind: mindsdb-sql\n  source: my-mindsdb\n  statement: SELECT * FROM tbl\n// after\nquery:\n  kind: mindsdb-sql\n  source: my-mindsdb\n  description: Run a parameterized SQL query on MindsDB.\n  statement: SELECT * FROM tbl","handlingStrategy":"validation","validationCode":"if cfg.Description == \"\" {\n    return errors.New(\"mindsdb-sql: description is required\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat description as a mandatory field in tool templates","CI-lint tools.yaml for empty strings on required fields","Write meaningful descriptions since they guide LLM tool selection"],"tags":["go","mindsdb","config-validation","missing-field"],"backgroundTag":"missing-tool-description","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"}