googleapis/mcp-toolbox · error

invalid '%s' parameter; expected an array

Error message

invalid '%s' parameter; expected an array

What it means

Parameter-parsing guard in parseFilters: the filters parameter is present but is not a JSON array, so individual filter objects cannot be extracted.

Source

Thrown at internal/tools/firestore/firestorequerycollection/firestorequerycollection.go:355

	// Parse limit
	if limit, ok := mapParams[limitKey].(int); ok {
		result.Limit = limit
	}

	// Parse analyze
	if analyze, ok := mapParams[analyzeQueryKey].(bool); ok {
		result.AnalyzeQuery = analyze
	}

	return result, nil
}

// parseFilters parses and validates filter configurations
func (t Tool) parseFilters(filtersRaw interface{}) ([]FilterConfig, error) {
	filters, ok := filtersRaw.([]any)
	if !ok {
		return nil, fmt.Errorf(errInvalidFilters, filtersKey)
	}

	if len(filters) > maxFilterLength {
		return nil, fmt.Errorf(errTooManyFilters, len(filters), maxFilterLength)
	}

	result := make([]FilterConfig, 0, len(filters))
	for i, filterRaw := range filters {
		filterJSON, ok := filterRaw.(string)
		if !ok {
			return nil, fmt.Errorf(errFilterNotString, i)
		}

		var filter FilterConfig
		if err := json.Unmarshal([]byte(filterJSON), &filter); err != nil {
			return nil, fmt.Errorf(errFilterParseFailed, i, err)
		}

View on GitHub (pinned to 8cc6e09de2)

Solutions

  1. Pass filters as a JSON array of filter objects, e.g. '[{"field":"age","op":">","value":21}]'
  2. Send the array as a JSON string if the parameter schema expects a string
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/tools/firestore/firestorequerycollection/firestorequerycollection.go:355 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/162e8949b7b990db. Report an issue: GitHub.