tinyhumansai/openhuman · error

generated tool `{name}` adapter_id must be non-empty

Error message

generated tool `{name}` adapter_id must be non-empty

What it means

validate_definition rejects a generated tool whose adapter_id is empty after normalization. The adapter_id selects the executor that runs the tool; with none, the tool could never be dispatched, so the definition is refused at admission instead of at first call.

Source

Thrown at src/openhuman/tools/generated.rs:329

    definition.description = definition.description.trim().to_string();
    definition.display_label = trim_option(definition.display_label.take());
    definition.adapter_id = definition.adapter_id.trim().to_string();
    definition.provider_id = normalize_optional_provider_id(definition.provider_id.take());
    definition.capability_id = trim_option(definition.capability_id.take());
    definition.source_digest = trim_option(definition.source_digest.take());
    definition.policy_surface = trim_option(definition.policy_surface.take());
}

fn validate_definition(definition: &GeneratedToolDefinition) -> anyhow::Result<()> {
    let name = definition.name.trim();
    if name.is_empty() {
        anyhow::bail!("generated tool name must be non-empty");
    }
    if definition.description.trim().is_empty() {
        anyhow::bail!("generated tool `{name}` description must be non-empty");
    }
    if definition.adapter_id.trim().is_empty() {
        anyhow::bail!("generated tool `{name}` adapter_id must be non-empty");
    }
    crate::openhuman::tools::schema::SchemaCleanr::validate(&definition.parameters_schema)
        .map_err(|err| anyhow::anyhow!("generated tool `{name}` has invalid schema: {err}"))?;
    Ok(())
}

fn validate_admission(
    definition: &GeneratedToolDefinition,
    config: &GeneratedToolAdmissionConfig,
    normalized_disabled_providers: &BTreeSet<String>,
    normalized_trusted_providers: &BTreeSet<String>,
    seen: &mut BTreeSet<String>,
) -> Result<(), String> {
    validate_definition(definition).map_err(|err| err.to_string())?;
    if !is_safe_generated_tool_name(&definition.name) {
        return Err(format!(
            "generated tool `{}` name contains unsupported characters",
            definition.name

View on GitHub (pinned to 7491200858)

Solutions

  1. Set a valid adapter_id on the GeneratedToolDefinition.
  2. Verify the capability source that generated the definition includes its adapter reference.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/tools/generated.rs:329 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/44409aaef849ac89. Report an issue: GitHub.