tinyhumansai/openhuman · error

invalid arguments for memory_tools_list: {e}

Error message

invalid arguments for memory_tools_list: {e}

What it means

The `memory_tools_list` arguments failed serde deserialization into its typed `Args` struct. The only required field is `tool_name` (an exact tool name like `bash` or `web_search`), so this fires when `tool_name` is missing, not a string, or when extra malformed fields are present — `{e}` names the field and expected type.

Source

Thrown at src/openhuman/memory/tools/tool_memory/list.rs:56

         updated_at DESC within each priority."
    }

    fn parameters_schema(&self) -> serde_json::Value {
        json!({
            "type": "object",
            "required": ["tool_name"],
            "properties": {
                "tool_name": {
                    "type": "string",
                    "description": "Exact tool name (e.g. `bash`, `web_search`)."
                }
            }
        })
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let parsed: Args = serde_json::from_value(args)
            .map_err(|e| anyhow::anyhow!("invalid arguments for memory_tools_list: {e}"))?;
        log::debug!("[tool][memory_tools] list tool_name={}", parsed.tool_name);
        let guard = active_memory_guard()
            .await
            .map_err(|e| anyhow::anyhow!("memory_tools_list: {e}"))?;
        let rules = guard
            .as_tool_memory()
            .ok_or_else(|| anyhow::anyhow!("memory_tools_list: {NO_TOOL_MEMORY}"))?
            .tool_rules(&parsed.tool_name)
            .await
            .map_err(|e| anyhow::anyhow!("memory_tools_list: {e}"))?;
        log::debug!(
            "[tool][memory_tools] list via guard tool_name={} rules={}",
            parsed.tool_name,
            rules.len()
        );
        let json = serde_json::to_string(&rules)?;
        Ok(ToolResult::success(json))
    }

View on GitHub (pinned to 7491200858)

Solutions

  1. Pass `tool_name` as a string exactly matching a tool name
  2. Remove fields not declared in the schema
  3. Use the serde detail in `{e}` to find the mismatched field
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/memory/tools/tool_memory/list.rs:56 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/c1cec0fe41306565. Report an issue: GitHub.