googleapis/mcp-toolbox · error
invalid parameters: %w
Error message
invalid parameters: %w
What it means
Thrown by runInvoke (cmd/internal/invoke/command.go:126) when parameters.ParseParams fails to map the user-supplied JSON params onto the tool's parameter schema — missing required parameters, unexpected parameters, or values that cannot be converted to the declared type (string/integer/boolean/array). The wrapped error names the offending parameter.
Source
Thrown at cmd/internal/invoke/command.go:126
params := make(map[string]any)
if paramsInput != "" {
if err := util.DecodeJSON(strings.NewReader(paramsInput), ¶ms); err != nil {
errMsg := fmt.Errorf("params must be a valid JSON string: %w", err)
opts.Logger.ErrorContext(ctx, errMsg.Error())
return errMsg
}
}
toolParams, err := tool.GetParameters(src)
if err != nil {
errMsg := fmt.Errorf("error getting parameters for tool: %w", err)
opts.Logger.ErrorContext(ctx, errMsg.Error())
return errMsg
}
parsedParams, err := parameters.ParseParams(toolParams, params, nil)
if err != nil {
errMsg := fmt.Errorf("invalid parameters: %w", err)
opts.Logger.ErrorContext(ctx, errMsg.Error())
return errMsg
}
parsedParams, err = tool.EmbedParams(ctx, parsedParams, primitiveMgr)
if err != nil {
errMsg := fmt.Errorf("error embedding parameters: %w", err)
opts.Logger.ErrorContext(ctx, errMsg.Error())
return errMsg
}
// Client Auth not supported for ephemeral CLI call
requiresAuth, err := tool.RequiresClientAuthorization(src)
if err != nil {
errMsg := fmt.Errorf("failed to check auth requirements: %w", err)
opts.Logger.ErrorContext(ctx, errMsg.Error())
return errMsg
}View on GitHub (pinned to 8cc6e09de2)
Solutions
- Read the wrapped error to identify the missing/invalid parameter and correct the params JSON.
- Check the exact parameter names and types via `toolbox tools list` or the tool's docs page.
- Ensure required parameters are present and values match declared types (unquoted numbers/booleans for non-string types).
- If parameter names changed after an upgrade, update your invocation script to the new schema.
Example fix
// before (missing required param, wrong type)
toolbox invoke execute_sql '{"sql": 123}'
// after
toolbox invoke execute_sql '{"sql": "SELECT 1"}' Defensive patterns
Strategy: validation
Validate before calling
// Fetch the tool manifest and check required params before invoking:
manifests, _ := client.ListTools(ctx)
for _, m := range manifests {
if m.GetName() == "execute_sql" {
fmt.Println(m.GetParameters()) // verify names/types your params must satisfy
}
} Type guard
func isStringParams(m map[string]any, keys ...string) bool {
for _, k := range keys {
if _, ok := m[k].(string); !ok {
return false
}
}
return true
} Try / catch
if err := runInvoke(...); err != nil {
if strings.Contains(err.Error(), "invalid parameters") {
fmt.Fprintf(os.Stderr, "usage: toolbox invoke %s '<json matching schema>'\n", toolName)
}
} Prevention
- Inspect `toolbox tools list` output for exact parameter names and types.
- Use unquoted JSON numbers/booleans for non-string parameters.
- Match parameter names exactly (usually snake_case) as declared in the tool schema.
When it happens
Trigger: Invoking a tool with a params object missing a required parameter, containing an unknown key not in the tool schema, or with a wrong-typed value (e.g. string "abc" for an integer parameter, number for a boolean).
Common situations: Typos in parameter names (camelCase vs snake_case), forgetting a required parameter, passing values as strings when the schema declares integer/boolean, or invoking a prebuilt tool with outdated parameter names after a toolbox upgrade.
Related errors
- error getting parameters for tool: %w
- error embedding parameters: %w
- failed to initialize resources: %w
- tool %q not found
- unable to retrieve source for tool %s
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/5f626d1ba1c31196.
Report an issue: GitHub.