{"record":{"id":"9518d6e22c80cd38","repo":"googleapis/mcp-toolbox","slug":"description-is-required-for-tool-q-9518d6","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/mongodb/mongodbdeletemany/mongodbdeletemany.go","lineNumber":74,"sourceCode":"\tSource                  string                 `yaml:\"source\" validate:\"required\"`\n\tDatabase                string                 `yaml:\"database\" validate:\"required\"`\n\tCollection              string                 `yaml:\"collection\"`\n\tCollectionAllowedValues []string               `yaml:\"collectionAllowedValues\"`\n\tFilterPayload           string                 `yaml:\"filterPayload\" validate:\"required\"`\n\tFilterParams            parameters.Parameters  `yaml:\"filterParams\"`\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\tallParameters := slices.Concat(cfg.FilterParams)\n\n\tif err := mongodbcommon.ValidateCollectionConfig(cfg.Collection, cfg.CollectionAllowedValues); err != nil {\n\t\treturn nil, err\n\t}\n\tallParameters = mongodbcommon.WithRuntimeCollectionParam(cfg.Collection, cfg.CollectionAllowedValues, allParameters)\n\n\tif err := parameters.CheckDuplicateParameters(allParameters); err != nil {\n\t\treturn nil, err\n\t}\n\n\tparamManifest := allParameters.Manifest()\n\tif paramManifest == nil {\n\t\tparamManifest = make([]parameters.ParameterManifest, 0)\n\t}\n","sourceCodeStart":56,"sourceCodeEnd":92,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/tools/mongodb/mongodbdeletemany/mongodbdeletemany.go#L56-L92","documentation":"Config.Initialize for mongodb-delete-many requires a non-empty description because it is published to MCP clients as tool metadata. Empty description causes tool construction to fail at config load time.","triggerScenarios":"Defining a `mongodb-delete-many` tool without a `description` (or with an empty string) in tools.yaml.","commonSituations":"Hand-editing YAML and skipping the field; generated configs with blank descriptions; accidental deletion during refactors.","solutions":["Add a non-empty `description` to the mongodb-delete-many tool config","Add a config-generation assertion that description is non-empty","Validate locally with a toolbox dry start"],"exampleFix":"// before\ndelete-many:\n  kind: mongodb-delete-many\n  source: my-mongo\n// after\ndelete-many:\n  kind: mongodb-delete-many\n  source: my-mongo\n  description: Delete multiple documents matching a filter from a MongoDB collection.","handlingStrategy":"validation","validationCode":"if cfg.Description == \"\" {\n    return errors.New(\"mongodb-delete-many: description is required\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Require description in tool definition templates","Schema-lint tools.yaml in CI for empty required fields","Test config load in CI before merge"],"tags":["go","mongodb","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"}