tinyhumansai/openhuman · error

match_conditions must be a non-empty array

Error message

match_conditions must be a non-empty array

What it means

Argument-validation guard in the Parallel find-entities tool: 'match_conditions' is absent/not an array, or an explicitly empty array (the filter on non-empty arrays makes emptiness fail here too). The schema requires it as the third mandatory parameter defining what qualifies as a match. Malformed model call; nothing is sent to Parallel.

Source

Thrown at src/openhuman/search/tools/parallel.rs:991

            },
            "required": ["objective", "entity_type", "match_conditions"]
        })
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let objective = args
            .get("objective")
            .and_then(|v| v.as_str())
            .ok_or_else(|| anyhow::anyhow!("Missing required parameter: objective"))?;
        let entity_type = args
            .get("entity_type")
            .and_then(|v| v.as_str())
            .ok_or_else(|| anyhow::anyhow!("Missing required parameter: entity_type"))?;
        let match_conditions = args
            .get("match_conditions")
            .and_then(|v| v.as_array())
            .filter(|a| !a.is_empty())
            .ok_or_else(|| anyhow::anyhow!("match_conditions must be a non-empty array"))?;

        let mut body = json!({
            "objective": objective,
            "entityType": entity_type,
            "matchConditions": match_conditions,
        });
        if let Some(g) = args.get("generator").and_then(|v| v.as_str()) {
            body["generator"] = json!(g);
        }
        if let Some(l) = args.get("match_limit").and_then(|v| v.as_u64()) {
            body["matchLimit"] = json!(l.clamp(5, 1000));
        }

        tracing::info!("[parallel_dataset] entity_type={}", entity_type);

        match self
            .client
            .post::<DatasetResponse>("/agent-integrations/parallel/dataset", &body)

View on GitHub (pinned to 7491200858)

Solutions

  1. Retry with 'match_conditions' as a non-empty array of condition objects/strings describing match criteria.
  2. At least one condition is mandatory — an empty array cannot identify candidates.
  3. Cross-check the schema's items definition for the expected condition shape.
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at src/openhuman/search/tools/parallel.rs:991 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/eab9023516ee5665. Report an issue: GitHub.