tinyhumansai/openhuman · error
Missing 'action' parameter
Error message
Missing 'action' parameter
What it means
Guard in the composio tool's argument dispatch: the 'action' argument is missing (or not a recognized string), so the tool cannot decide between list/connect/execute. Unknown or missing action deliberately routes to the write path and requires an explicit value.
Source
Thrown at src/openhuman/integrations/composio/tools/direct.rs:796
fn external_effect_with_args(&self, args: &serde_json::Value) -> bool {
// `action="list"` enumerates available Composio actions —
// a read-only catalog call. `action="connect"` only returns
// an OAuth URL the user then visits manually; the
// subsequent OAuth handoff is its own consent flow so the
// tool call itself has no outbound side effect to gate.
// `action="execute"` (or anything unknown / missing) is the
// write path and routes through the approval gate.
!matches!(
args.get("action").and_then(|v| v.as_str()),
Some("list") | Some("connect")
)
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
let action = args
.get("action")
.and_then(|v| v.as_str())
.ok_or_else(|| anyhow::anyhow!("Missing 'action' parameter"))?;
let entity_id = args
.get("entity_id")
.and_then(|v| v.as_str())
.unwrap_or(self.default_entity_id.as_str());
match action {
"list" => {
let app = args.get("app").and_then(|v| v.as_str());
match self.list_actions(app).await {
Ok(actions) => {
let summary: Vec<String> = actions
.iter()
.take(20)
.map(|a| {
format!(
"- {} ({}): {}",
a.name,View on GitHub (pinned to 7491200858)
Solutions
- Pass action as one of "list", "connect", or "execute"
- Use the dedicated composio tools for each action instead of relying on the generic action switch
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/integrations/composio/tools/direct.rs:796 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/f2ebf004d210cc3e.
Report an issue: GitHub.