googleapis/mcp-toolbox · error

unsupported valueType %q for map parameter

Error message

unsupported valueType %q for map parameter

What it means

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.

Source

Thrown at internal/util/parameters/parameters.go:1300

	p.Default = rawItem.Default
	p.ValueType = rawItem.ValueType
	return nil
}

// getPrototypeParameter is a helper factory to create a temporary parameter
// based on a type string for parsing and manifest generation.
func getPrototypeParameter(typeName string) (Parameter, error) {
	switch typeName {
	case "string":
		return NewStringParameter("", ""), nil
	case "integer":
		return NewIntParameter("", ""), nil
	case "boolean":
		return NewBooleanParameter("", ""), nil
	case "float":
		return NewFloatParameter("", ""), nil
	default:
		return nil, fmt.Errorf("unsupported valueType %q for map parameter", typeName)
	}
}

func (p *MapParameter) IsAllowedValues(v map[string]any) bool {
	a := p.GetAllowedValues()
	if len(a) == 0 {
		return true
	}
	for _, av := range a {
		if reflect.DeepEqual(v, av) {
			return true
		}
	}
	return false
}

func (p *MapParameter) IsExcludedValues(v map[string]any) bool {
	a := p.GetExcludedValues()

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Change valueType in tools.yaml to one of: string, integer, boolean, float.
  2. Remove valueType entirely for a generic map (json.Number conversion applies).
  3. Check the toolbox version's supported valueType list if migrating configs.

Example fix

# before
- name: attrs
  type: map
  valueType: int
# after
- name: attrs
  type: map
  valueType: integer
Defensive patterns

Strategy: validation

Validate before calling

const validValueTypes = ['string','integer','boolean','float'];
if (param.type === 'map' && param.valueType && !validValueTypes.includes(param.valueType)) {
  throw new Error(`unsupported valueType: ${param.valueType}`);
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05). Data as JSON: /api/errors/c907489864a309ec. Report an issue: GitHub.