aaif-goose/goose · error

Duplicate tool name: {}

Error message

Duplicate tool name: {}

What it means

Error "Duplicate tool name: {}" thrown in aaif-goose/goose.

Source

Thrown at crates/goose-provider-types/src/formats/databricks.rs:314

                if let Some(temp) = model_config.temperature {
                    obj.insert("temperature".to_string(), json!(temp));
                }
            }
            obj.insert(
                "max_completion_tokens".to_string(),
                json!(model_config.max_output_tokens()),
            );
        }
    }
}

pub fn format_tools(tools: &[Tool], _model_name: &str) -> anyhow::Result<Vec<Value>> {
    let mut tool_names = std::collections::HashSet::new();
    let mut result = Vec::new();

    for tool in tools {
        if !tool_names.insert(&tool.name) {
            return Err(anyhow!("Duplicate tool name: {}", tool.name));
        }

        let has_properties = tool
            .input_schema
            .get("properties")
            .and_then(|v| v.as_object())
            .is_some_and(|p| !p.is_empty());

        // Databricks serving endpoints (including Gemini-backed ones) use the
        // OpenAI-compatible chat format, so tools always use "parameters" — not
        // the Google-native "parametersJsonSchema" field.
        let mut def = json!({
            "name": tool.name,
            "description": tool.description,
        });
        if has_properties {
            def["parameters"] = json!(tool.input_schema);
        }

View on GitHub (pinned to 3810898a74)

When it happens

Trigger: Thrown at crates/goose-provider-types/src/formats/databricks.rs:314 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of aaif-goose/goose@3810898a74 (2026-08-16). Data as JSON: /api/errors/1a0858681174857e. Report an issue: GitHub.