googleapis/mcp-toolbox · warning
unknown action: %s
Error message
unknown action: %s
What it means
RunPulse dispatches on the required `action` parameter and only supports check_db_connections, check_dashboard_performance, check_dashboard_errors, check_explore_performance, check_schedule_failures, and check_legacy_features. Any other value falls to the default branch and returns this error. This is a user-supplied input validation error at invocation time.
Source
Thrown at internal/tools/looker/lookerhealthpulse/lookerhealthpulse.go:202
SdkClient *v4.LookerSDK
}
func (t *pulseTool) RunPulse(ctx context.Context, source compatibleSource, params PulseParams) (interface{}, error) {
switch params.Action {
case "check_db_connections":
return t.checkDBConnections(ctx, source)
case "check_dashboard_performance":
return t.checkDashboardPerformance(ctx, source)
case "check_dashboard_errors":
return t.checkDashboardErrors(ctx, source)
case "check_explore_performance":
return t.checkExplorePerformance(ctx, source)
case "check_schedule_failures":
return t.checkScheduleFailures(ctx, source)
case "check_legacy_features":
return t.checkLegacyFeatures(ctx, source)
default:
return nil, fmt.Errorf("unknown action: %s", params.Action)
}
}
// Check DB connections and run tests
func (t *pulseTool) checkDBConnections(ctx context.Context, source compatibleSource) (interface{}, error) {
logger, err := util.LoggerFromContext(ctx)
if err != nil {
return nil, fmt.Errorf("unable to get logger from ctx: %s", err)
}
logger.InfoContext(ctx, "Test 1/6: Checking connections")
reservedNames := map[string]struct{}{
"looker__internal__analytics__replica": {},
"looker__internal__analytics": {},
"looker": {},
"looker__ilooker": {},
}
View on GitHub (pinned to 8cc6e09de2)
Solutions
- Set action to one of: check_db_connections, check_dashboard_performance, check_dashboard_errors, check_explore_performance, check_schedule_failures, check_legacy_features.
- Check spelling and casing — the switch is exact, case-sensitive matching.
- If calling via an LLM, constrain the action parameter to the documented enum in the tool description.
- If a new action is genuinely needed, add a case to RunPulse and a corresponding checkX method.
Example fix
// before
{"action": "check_dashboards"} // unknown
// after
{"action": "check_dashboard_performance"} Defensive patterns
Strategy: validation
Validate before calling
validActions := map[string]bool{
"check_db_connections": true, "check_dashboard_performance": true,
"check_dashboard_errors": true, "check_explore_performance": true,
"check_schedule_failures": true, "check_legacy_features": true,
}
if !validActions[params["action"]] {
return errors.New("action must be one of the six supported pulse checks")
} Try / catch
result, toolErr := tool.Invoke(ctx, src, params, token)
if toolErr != nil && strings.Contains(toolErr.Error(), "unknown action") {
return fmt.Errorf("use one of: check_db_connections, check_dashboard_performance, check_dashboard_errors, check_explore_performance, check_schedule_failures, check_legacy_features")
} Prevention
- Constrain the action parameter to the documented enum in client code
- Copy action names exactly, lowercase with underscores
- Do not reuse action names from other looker tools (projects/models/explores)
- If using an LLM, restrict via the tool's parameter schema
When it happens
Trigger: Invoking the looker-health-pulse tool with params.Action set to a value outside the supported switch cases (typo, wrong casing, or an action from a different tool).
Common situations: LLM hallucinating an action name, clients copying the `action` enum from looker-health-analyze (projects/models/explores), or case-sensitivity mistakes like "Check_DB_Connections".
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- description is required for tool %q
- invalid source for %q tool: source %q is not a compatible ty
- description is required for tool %q
- invalid source for %q tool: source %q is not a compatible ty
- description is required for tool %q
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/e3f47bcc68bbb781.
Report an issue: GitHub.