googleapis/mcp-toolbox · error

parameter is missing 'type' field

Error message

parameter is missing 'type' field

What it means

parseParamFromDelayedUnmarshaler looks for the discriminating 'type' key in each raw parameter map. This sentinel-style guard fires during config parsing when a parameter entry in tools.yaml lacks the 'type' field entirely, so the parser cannot dispatch to the correct parameter type.

Source

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

			return err
		}
		(*c) = append((*c), p)
	}
	return nil
}

// 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
}

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Add a 'type' field (e.g. string, int, array, map) to the offending parameter in tools.yaml
  2. Check the parameter block indentation so the entry is parsed as a parameter map
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/util/parameters/parameters.go:393 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/b551918f34fdcb10. Report an issue: GitHub.