{"record":{"id":"d25d3993cbc9a6a2","repo":"tinyhumansai/openhuman","slug":"missing-required-arguments-object","errorCode":null,"errorMessage":"missing required `arguments` object","messagePattern":"missing required `arguments` object","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/tools/impl/network/mcp.rs","lineNumber":262,"sourceCode":"    fn supports_markdown(&self) -> bool {\n        true\n    }\n\n    async fn execute_with_options(\n        &self,\n        args: Value,\n        options: ToolCallOptions,\n    ) -> anyhow::Result<ToolResult> {\n        self.security\n            .enforce_tool_operation(ToolOperation::Act, self.name())\n            .map_err(|err| anyhow::anyhow!(err))?;\n\n        let server = required_string_arg(&args, \"server\")?;\n        let tool = required_string_arg(&args, \"tool\")?;\n        let arguments = args\n            .get(\"arguments\")\n            .cloned()\n            .ok_or_else(|| anyhow::anyhow!(\"missing required `arguments` object\"))?;\n        if !arguments.is_object() {\n            return Ok(ToolResult::error(\"`arguments` must be an object\"));\n        }\n\n        let mut result = match self.registry.call_tool(&server, &tool, arguments).await {\n            Ok(result) => result.rendered,\n            Err(err) => return Ok(ToolResult::error(format!(\"mcp_call_tool failed: {err}\"))),\n        };\n\n        if options.prefer_markdown && result.markdown_formatted.is_none() {\n            result.markdown_formatted = Some(result.output());\n        }\n        Ok(result)\n    }\n\n    async fn execute(&self, args: Value) -> anyhow::Result<ToolResult> {\n        self.execute_with_options(args, ToolCallOptions::default())\n            .await","sourceCodeStart":244,"sourceCodeEnd":280,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/tools/impl/network/mcp.rs#L244-L280","documentation":"The mcp_call tool takes 'server', 'tool' and an 'arguments' object forwarded to the remote MCP tool. After server/tool pass required_string_arg, this fires when args has no 'arguments' key at all (a null value is also rejected by the clone) — an invocation-shape error, not an MCP transport failure.","triggerScenarios":"Thrown at src/openhuman/tools/impl/network/mcp.rs:262 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include an \"arguments\" object in the mcp_call payload, using {} when the target tool takes no parameters"],"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-14T00:17:10.932Z"}