tinyhumansai/openhuman · error
Missing required parameter: urls
Error message
Missing required parameter: urls
What it means
Argument-validation guard in the Parallel extract/contents tool's execute: 'urls' is missing or not an array (args.get("urls").and_then(as_array) fails). The tool's schema has only urls in its required list, so this indicates the model called the tool without the URL list or with a wrong-typed value.
Source
Thrown at src/openhuman/search/tools/parallel.rs:342
"type": "boolean",
"description": "Include relevant excerpts (default true)",
"default": true
},
"full_content": {
"type": "boolean",
"description": "Include full page content (default false)",
"default": false
}
},
"required": ["urls"]
})
}
async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
let urls = args
.get("urls")
.and_then(|v| v.as_array())
.ok_or_else(|| anyhow::anyhow!("Missing required parameter: urls"))?;
if urls.is_empty() {
return Ok(ToolResult::error("urls must contain at least one URL"));
}
let mut url_strings: Vec<&str> = Vec::with_capacity(urls.len());
for (i, v) in urls.iter().enumerate() {
match v.as_str() {
Some(s) if !s.trim().is_empty() => url_strings.push(s),
Some(_) => {
return Ok(ToolResult::error(format!("urls[{i}] is an empty string")));
}
None => {
return Ok(ToolResult::error(format!("urls[{i}] is not a string")));
}
}
}
View on GitHub (pinned to 7491200858)
Solutions
- Re-issue the call with 'urls' as a non-empty array of URL strings.
- Validate each entry is a well-formed absolute URL before sending.
- If the model intended a single page, pass it as a one-element array.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/search/tools/parallel.rs:342 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/e9c203745fcf5b21.
Report an issue: GitHub.