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

  1. Re-issue the call with 'urls' as a non-empty array of URL strings.
  2. Validate each entry is a well-formed absolute URL before sending.
  3. 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.