{"record":{"id":"45be66873e8d8a91","repo":"googleapis/mcp-toolbox","slug":"description-is-required-for-tool-q-45be66","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/mongodbaggregate/mongodbaggregate.go","lineNumber":76,"sourceCode":"\tCollection              string                 `yaml:\"collection\"`\n\tCollectionAllowedValues []string               `yaml:\"collectionAllowedValues\"`\n\tPipelinePayload         string                 `yaml:\"pipelinePayload\" validate:\"required\"`\n\tPipelineParams          parameters.Parameters  `yaml:\"pipelineParams\" validate:\"required\"`\n\tCanonical               bool                   `yaml:\"canonical\"`\n\tReadOnly                bool                   `yaml:\"readOnly\"`\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.PipelineParams)\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":58,"sourceCodeEnd":94,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/tools/mongodb/mongodbaggregate/mongodbaggregate.go#L58-L94","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":"Declaring a `mongodb-aggregate` tool in tools.yaml without a `description` or with description: \"\".","commonSituations":"Hand-written YAML missing the field; automated config generation leaving it blank; cleanup accidentally removed the description.","solutions":["Add a non-empty `description` to the mongodb-aggregate tool entry","Validate tool configs at generation time (fail fast on empty description)","Load the config locally with `go run .` before deploying"],"exampleFix":"// before\naggregate:\n  kind: mongodb-aggregate\n  source: my-mongo\n// after\naggregate:\n  kind: mongodb-aggregate\n  source: my-mongo\n  description: Run an aggregation pipeline on a MongoDB collection.","handlingStrategy":"validation","validationCode":"if cfg.Description == \"\" {\n    return errors.New(\"mongodb-aggregate: description is required\")\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Include description in every mongodb tool definition","Add YAML schema validation (kind, source, description required) to CI","Validate locally before deploying"],"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"}