{"record":{"id":"1a0858681174857e","repo":"aaif-goose/goose","slug":"duplicate-tool-name","errorCode":null,"errorMessage":"Duplicate tool name: {}","messagePattern":"Duplicate tool name: (.+?)","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/goose-provider-types/src/formats/databricks.rs","lineNumber":314,"sourceCode":"                if let Some(temp) = model_config.temperature {\n                    obj.insert(\"temperature\".to_string(), json!(temp));\n                }\n            }\n            obj.insert(\n                \"max_completion_tokens\".to_string(),\n                json!(model_config.max_output_tokens()),\n            );\n        }\n    }\n}\n\npub fn format_tools(tools: &[Tool], _model_name: &str) -> anyhow::Result<Vec<Value>> {\n    let mut tool_names = std::collections::HashSet::new();\n    let mut result = Vec::new();\n\n    for tool in tools {\n        if !tool_names.insert(&tool.name) {\n            return Err(anyhow!(\"Duplicate tool name: {}\", tool.name));\n        }\n\n        let has_properties = tool\n            .input_schema\n            .get(\"properties\")\n            .and_then(|v| v.as_object())\n            .is_some_and(|p| !p.is_empty());\n\n        // Databricks serving endpoints (including Gemini-backed ones) use the\n        // OpenAI-compatible chat format, so tools always use \"parameters\" — not\n        // the Google-native \"parametersJsonSchema\" field.\n        let mut def = json!({\n            \"name\": tool.name,\n            \"description\": tool.description,\n        });\n        if has_properties {\n            def[\"parameters\"] = json!(tool.input_schema);\n        }","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/aaif-goose/goose/blob/3810898a7447ec3299be72e223d3570a7aabf0ab/crates/goose-provider-types/src/formats/databricks.rs#L296-L332","documentation":"Error \"Duplicate tool name: {}\" thrown in aaif-goose/goose.","triggerScenarios":"Thrown at crates/goose-provider-types/src/formats/databricks.rs:314 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"3810898a7447ec3299be72e223d3570a7aabf0ab","analyzedAt":"2026-08-16T10:14:26.282Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}