{"record":{"id":"c907489864a309ec","repo":"googleapis/mcp-toolbox","slug":"unsupported-valuetype-q-for-map-parameter","errorCode":null,"errorMessage":"unsupported valueType %q for map parameter","messagePattern":"unsupported valueType %q for map parameter","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/util/parameters/parameters.go","lineNumber":1300,"sourceCode":"\tp.Default = rawItem.Default\n\tp.ValueType = rawItem.ValueType\n\treturn nil\n}\n\n// getPrototypeParameter is a helper factory to create a temporary parameter\n// based on a type string for parsing and manifest generation.\nfunc getPrototypeParameter(typeName string) (Parameter, error) {\n\tswitch typeName {\n\tcase \"string\":\n\t\treturn NewStringParameter(\"\", \"\"), nil\n\tcase \"integer\":\n\t\treturn NewIntParameter(\"\", \"\"), nil\n\tcase \"boolean\":\n\t\treturn NewBooleanParameter(\"\", \"\"), nil\n\tcase \"float\":\n\t\treturn NewFloatParameter(\"\", \"\"), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unsupported valueType %q for map parameter\", typeName)\n\t}\n}\n\nfunc (p *MapParameter) IsAllowedValues(v map[string]any) bool {\n\ta := p.GetAllowedValues()\n\tif len(a) == 0 {\n\t\treturn true\n\t}\n\tfor _, av := range a {\n\t\tif reflect.DeepEqual(v, av) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (p *MapParameter) IsExcludedValues(v map[string]any) bool {\n\ta := p.GetExcludedValues()","sourceCodeStart":1282,"sourceCodeEnd":1318,"githubUrl":"https://github.com/googleapis/mcp-toolbox/blob/8cc6e09de2ad7b8bffc77751799585a1401a48eb/internal/util/parameters/parameters.go#L1282-L1318","documentation":"MapParameter supports a limited set of valueTypes (string, integer, boolean, float). When converting a generic map schema (MapParameterFromWire etc.) with an unknown valueType, initialization fails with this error before the tool ever runs.","triggerScenarios":"Loading a tools.yaml where a map parameter declares valueType: 'int', 'number', 'str', or any string other than string|integer|boolean|float; or programmatic construction via the parameter factory with an unsupported typeName.","commonSituations":"Typos like 'Integer' or 'int' in YAML; using SQL-ish type names (varchar, numeric); older configs written for a version with different accepted valueType strings.","solutions":["Change valueType in tools.yaml to one of: string, integer, boolean, float.","Remove valueType entirely for a generic map (json.Number conversion applies).","Check the toolbox version's supported valueType list if migrating configs."],"exampleFix":"# before\n- name: attrs\n  type: map\n  valueType: int\n# after\n- name: attrs\n  type: map\n  valueType: integer","handlingStrategy":"validation","validationCode":"const validValueTypes = ['string','integer','boolean','float'];\nif (param.type === 'map' && param.valueType && !validValueTypes.includes(param.valueType)) {\n  throw new Error(`unsupported valueType: ${param.valueType}`);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only use string|integer|boolean|float as valueType.","Omit valueType for generic maps.","Validate tools.yaml with a JSON/YAML schema in CI."],"tags":["yaml-config","map-parameter","unsupported-type","mcp-toolbox"],"backgroundTag":"unsupported-parameter-type","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"}