tinyhumansai/openhuman · error
missing required `arguments` object
Error message
missing required `arguments` object
What it means
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.
Source
Thrown at src/openhuman/tools/impl/network/mcp.rs:262
fn supports_markdown(&self) -> bool {
true
}
async fn execute_with_options(
&self,
args: Value,
options: ToolCallOptions,
) -> anyhow::Result<ToolResult> {
self.security
.enforce_tool_operation(ToolOperation::Act, self.name())
.map_err(|err| anyhow::anyhow!(err))?;
let server = required_string_arg(&args, "server")?;
let tool = required_string_arg(&args, "tool")?;
let arguments = args
.get("arguments")
.cloned()
.ok_or_else(|| anyhow::anyhow!("missing required `arguments` object"))?;
if !arguments.is_object() {
return Ok(ToolResult::error("`arguments` must be an object"));
}
let mut result = match self.registry.call_tool(&server, &tool, arguments).await {
Ok(result) => result.rendered,
Err(err) => return Ok(ToolResult::error(format!("mcp_call_tool failed: {err}"))),
};
if options.prefer_markdown && result.markdown_formatted.is_none() {
result.markdown_formatted = Some(result.output());
}
Ok(result)
}
async fn execute(&self, args: Value) -> anyhow::Result<ToolResult> {
self.execute_with_options(args, ToolCallOptions::default())
.awaitView on GitHub (pinned to 7491200858)
Solutions
- Include an "arguments" object in the mcp_call payload, using {} when the target tool takes no parameters
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/network/mcp.rs:262 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/d25d3993cbc9a6a2.
Report an issue: GitHub.