{"record":{"id":"68c71cf0da250bea","repo":"tinyhumansai/openhuman","slug":"missing-required-parameter-objective","errorCode":null,"errorMessage":"Missing required parameter: objective","messagePattern":"Missing required parameter: objective","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/search/tools/parallel.rs","lineNumber":174,"sourceCode":"                    \"default\": 10\n                },\n                \"max_characters_per_excerpt\": {\n                    \"type\": \"integer\",\n                    \"description\": \"Max characters per excerpt (100-10000, default 500)\",\n                    \"minimum\": 100,\n                    \"maximum\": 10000,\n                    \"default\": 500\n                }\n            },\n            \"required\": [\"objective\", \"search_queries\"]\n        })\n    }\n\n    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {\n        let objective = args\n            .get(\"objective\")\n            .and_then(|v| v.as_str())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing required parameter: objective\"))?;\n\n        if objective.trim().is_empty() {\n            return Ok(ToolResult::error(\"objective cannot be empty\"));\n        }\n\n        let search_queries = args\n            .get(\"search_queries\")\n            .and_then(|v| v.as_array())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing required parameter: search_queries\"))?;\n\n        if search_queries.is_empty() {\n            return Ok(ToolResult::error(\n                \"search_queries must contain at least one query\",\n            ));\n        }\n\n        let mut queries: Vec<&str> = Vec::with_capacity(search_queries.len());\n        for (i, v) in search_queries.iter().enumerate() {","sourceCodeStart":156,"sourceCodeEnd":192,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/search/tools/parallel.rs#L156-L192","documentation":"Argument-validation guard in the Parallel research/search tool's execute: the 'objective' argument is missing or not a string (args.get(\"objective\").and_then(as_str) returns None). The tool schema lists objective in required, so this fires on malformed model calls. A separate check right after rejects a whitespace-only objective, so this error strictly means 'parameter absent or wrong type'.","triggerScenarios":"Thrown at src/openhuman/search/tools/parallel.rs:174 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-issue the call with 'objective' as a non-empty string describing the search goal.","Confirm the model was shown the tool's required-parameter list (objective, search_queries).","If arguments arrive as nested objects, coerce to string at the call site before invoking."],"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"}