{"record":{"id":"f8847e037c12d244","repo":"tinyhumansai/openhuman","slug":"querit-search-unavailable-no-api-key-configured","errorCode":null,"errorMessage":"Querit search unavailable: no API key configured. Set QUERIT_API_KEY or OPENHUMAN_QUERIT_API_KEY, or add search.querit.api_key to config.toml.","messagePattern":"Querit search unavailable: no API key configured\\. Set QUERIT_API_KEY or OPENHUMAN_QUERIT_API_KEY, or add search\\.querit\\.api_key to config\\.toml\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/openhuman/search/tools/querit.rs","lineNumber":435,"sourceCode":"    async fn execute(&self, args: serde_json::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: serde_json::Value,\n        options: ToolCallOptions,\n    ) -> anyhow::Result<ToolResult> {\n        let query = args\n            .get(\"query\")\n            .and_then(Value::as_str)\n            .map(str::trim)\n            .filter(|q| !q.is_empty())\n            .ok_or_else(|| anyhow::anyhow!(\"Missing required parameter: query\"))?;\n\n        let api_key = self.api_key.as_deref().ok_or_else(|| {\n            anyhow::anyhow!(\n                \"Querit search unavailable: no API key configured. \\\n                 Set QUERIT_API_KEY or OPENHUMAN_QUERIT_API_KEY, \\\n                 or add search.querit.api_key to config.toml.\"\n            )\n        })?;\n\n        let max_results = args\n            .get(\"max_results\")\n            .or_else(|| args.get(\"count\"))\n            .and_then(Value::as_u64)\n            .map(|n| n.clamp(1, 20) as usize)\n            .unwrap_or(self.max_results);\n\n        let mut body = json!({\n            \"query\": query,\n            \"count\": max_results,\n        });\n        if let Some(filters) = Self::build_filters(&args) {","sourceCodeStart":417,"sourceCodeEnd":453,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/749120085864ce16e0f273c7b86fac7740b39c5b/src/openhuman/search/tools/querit.rs#L417-L453","documentation":"Configuration guard in QueritTool::execute_with_options: after the query passes validation, the tool looks up its Querit API credential (env QUERIT_API_KEY / OPENHUMAN_QUERIT_API_KEY or search.querit.api_key in config.toml) and finds none configured. The Querit backend requires bearer auth, so the search is aborted before any network request.","triggerScenarios":"Thrown at src/openhuman/search/tools/querit.rs:435 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Export QUERIT_API_KEY (or OPENHUMAN_QUERIT_API_KEY) in the environment before starting the core.","Add search.querit.api_key = \"...\" to the workspace config.toml.","If Querit is not the intended provider, use a different search tool or configure a fallback backend."],"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-14T05:17:10.506Z"}