{"record":{"id":"2d614566d9a83a14","repo":"tinyhumansai/openhuman","slug":"missing-action-name-or-tool-slug-for-execute","errorCode":null,"errorMessage":"Missing 'action_name' (or 'tool_slug') for execute","messagePattern":"Missing 'action_name' \\(or 'tool_slug'\\) for execute","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/integrations/composio/tools/direct.rs","lineNumber":849,"sourceCode":"                    }\n                    Err(e) => Ok(ToolResult::error(format!(\"Failed to list actions: {e}\"))),\n                }\n            }\n\n            \"execute\" => {\n                if let Err(error) = self\n                    .security\n                    .enforce_tool_operation(ToolOperation::Act, \"composio.execute\")\n                {\n                    return Ok(ToolResult::error(error));\n                }\n\n                let action_name = args\n                    .get(\"tool_slug\")\n                    .or_else(|| args.get(\"action_name\"))\n                    .and_then(|v| v.as_str())\n                    .ok_or_else(|| {\n                        anyhow::anyhow!(\"Missing 'action_name' (or 'tool_slug') for execute\")\n                    })?;\n\n                let params = args.get(\"params\").cloned().unwrap_or(json!({}));\n                let acct_ref = args.get(\"connected_account_id\").and_then(|v| v.as_str());\n\n                match self\n                    .execute_action(action_name, params, Some(entity_id), acct_ref)\n                    .await\n                {\n                    Ok(result) => {\n                        let output = serde_json::to_string_pretty(&result)\n                            .unwrap_or_else(|_| format!(\"{result:?}\"));\n                        Ok(ToolResult::success(output))\n                    }\n                    Err(e) => Ok(ToolResult::error(format!(\"Action execution failed: {e}\"))),\n                }\n            }\n","sourceCodeStart":831,"sourceCodeEnd":867,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/integrations/composio/tools/direct.rs#L831-L867","documentation":"Execute-path guard: neither tool_slug nor action_name was supplied (or they were not strings), so there is no Composio action to execute. The security gate for composio.execute has already passed at this point.","triggerScenarios":"Thrown at src/openhuman/integrations/composio/tools/direct.rs:849 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Supply tool_slug (preferred) or action_name naming the Composio action to run","List available actions with action=\"list\" to find the correct slug"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"749120085864ce16e0f273c7b86fac7740b39c5b","analyzedAt":"2026-08-17T21:21:45.363Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}