{"record":{"id":"3b00a031452c9185","repo":"tinyhumansai/openhuman","slug":"missing-required-parameter-url","errorCode":null,"errorMessage":"Missing required parameter: url","messagePattern":"Missing required parameter: url","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/search/tools/exa.rs","lineNumber":598,"sourceCode":"        true\n    }\n\n    async fn execute(&self, args: Value) -> anyhow::Result<ToolResult> {\n        self.execute_with_options(args, ToolCallOptions::default())\n            .await\n    }\n\n    async fn execute_with_options(\n        &self,\n        args: Value,\n        options: ToolCallOptions,\n    ) -> anyhow::Result<ToolResult> {\n        if let Some(blocked) = self.client.local_only_block() {\n            return Ok(blocked);\n        }\n\n        let url = non_empty(args.get(\"url\").and_then(Value::as_str))\n            .ok_or_else(|| anyhow::anyhow!(\"Missing required parameter: url\"))?;\n\n        let limit = self.client.requested_results(&args);\n        let mut body = json!({\n            \"url\": url,\n            \"numResults\": limit,\n        });\n        if let Some(exclude_source) = args.get(\"exclude_source_domain\").and_then(Value::as_bool) {\n            body[\"excludeSourceDomain\"] = json!(exclude_source);\n        }\n        copy_domain_filter(&args, \"include_domains\", \"includeDomains\", &mut body);\n        copy_domain_filter(&args, \"exclude_domains\", \"excludeDomains\", &mut body);\n        if let Some(contents) = contents_request(&args) {\n            body[\"contents\"] = contents;\n        }\n\n        let results = self.client.post_documents(\"findSimilar\", body).await?;\n        Ok(self.client.to_result(\n            &results,","sourceCodeStart":580,"sourceCodeEnd":616,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/search/tools/exa.rs#L580-L616","documentation":"Argument-validation guard in the Exa find-similar tool's execute_with_options: the 'url' argument is missing, not a string, or empty after trimming. The JSON schema declares url as required, so this means the model sent a malformed call. Returned as a normal tool error for the model to retry with corrected arguments.","triggerScenarios":"Thrown at src/openhuman/search/tools/exa.rs:598 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Retry the call including a non-empty 'url' string parameter (the source URL to find similar pages for).","Ensure the URL is absolute and well-formed; downstream Exa validation may also reject malformed URLs.","If the model repeatedly omits it, surface the tool schema/usage example in the agent prompt."],"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"}