googleapis/mcp-toolbox · error
parameter 'type' field must be a string, got %T
Error message
parameter 'type' field must be a string, got %T
What it means
parseParamFromDelayedUnmarshaler type-asserts the 'type' key of a raw parameter map to string. The error fires during config parsing when the parameter's 'type' key in tools.yaml is a non-string YAML value (e.g. a number, list, or nested map), reporting the offending Go type via %T.
Source
Thrown at internal/util/parameters/parameters.go:398
}
// parseParamFromDelayedUnmarshaler is a helper function that is required to parse
// parameters because there are multiple different types
func parseParamFromDelayedUnmarshaler(ctx context.Context, u *util.DelayedUnmarshaler) (Parameter, error) {
var p map[string]any
err := u.Unmarshal(&p)
if err != nil {
return nil, fmt.Errorf("error parsing parameters: %w", err)
}
t, ok := p["type"]
if !ok {
return nil, fmt.Errorf("parameter is missing 'type' field")
}
typeStr, ok := t.(string)
if !ok {
return nil, fmt.Errorf("parameter 'type' field must be a string, got %T", t)
}
param, err := ParseParameter(ctx, p, typeStr)
if err != nil {
return nil, err
}
if err := validateParameter(param); err != nil {
return nil, err
}
return param, nil
}
// ParseParameter parses a raw map into a Parameter object based on its "type" field.
func ParseParameter(ctx context.Context, p map[string]any, paramType string) (Parameter, error) {
dec, err := util.NewStrictDecoder(p)
if err != nil {View on GitHub (pinned to 8cc6e09de2)
Solutions
- Quote the 'type' value so YAML parses it as a string (e.g. type: "string")
- Replace a list or mapping value with a valid scalar type name
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at internal/util/parameters/parameters.go:398 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/cd18562f448459b8.
Report an issue: GitHub.