Configuration
Input
An expression that resolves to a JSON array — for example,
{{Steps.API_Call.Output.Body.data.orders}}.Logical operator
AND (default) — an item must match every condition to be kept.
OR — an item is kept if it matches at least one condition.
Conditions
One or more rules to evaluate against each item. Each condition has:
- Field path — dot-notation path to the field (e.g.,
status,address.city). Leave empty to filter by the item value itself (useful for arrays of strings or numbers). - Operator — the comparison to apply.
- Value — the value to compare against. Supports expressions like
{{Variables.threshold}}. Not required for existence and emptiness operators. - Case sensitive — toggle for string comparisons (off by default).
Operators
Value operators
These require a comparison value.| Operator | What it checks |
|---|---|
| Equals | Field value matches exactly (supports numeric and boolean coercion) |
| Not Equals | Field value does not match |
| Greater Than | Field > Value (numeric first, then lexicographic fallback) |
| Greater Than or Equal | Field ≥ Value |
| Less Than | Field < Value |
| Less Than or Equal | Field ≤ Value |
| Contains | Field string includes Value as a substring |
| Not Contains | Field string does not include Value |
| Starts With | Field string begins with Value |
| Ends With | Field string ends with Value |
Existence operators
These do not require a value — they check the field itself.| Operator | What it checks |
|---|---|
| Exists | The field is present on the item (even if its value is null) |
| Not Exists | The field is not present on the item |
| Is Empty | The field is null, whitespace, or an empty array |
| Is Not Empty | The field has a non-empty value |
Field paths
Use dot notation to reach nested fields:| Field path | Reaches |
|---|---|
status | item.status |
address.city | item.address.city |
user.profile.email | item.user.profile.email |
| (empty) | The item itself — useful for primitive arrays like ["a", "b", "c"] |
If a field path does not exist on an item, the condition evaluates to
false for most operators. The exception is Not Exists, which returns true for missing fields.Type coercion
The Filter step applies smart comparison:- Numeric fields — if both the field value and the condition value parse as numbers, a numeric comparison is used. This means
"10"is correctly treated as less than"9"in numeric mode, unlike string comparison. - Boolean fields —
true/falsevalues are compared as booleans. - String fallback — if neither numeric nor boolean applies, string comparison is used with the case sensitivity toggle.
Output
The step returns a JSON array containing only the items that passed your conditions. The original order is preserved.[].
Use case: extract overdue invoices from an API
A finance agent fetches all invoices from an accounting API and needs to isolate the ones that are overdue and above a minimum amount before passing them to a model for follow-up email drafting. Agent flow:| Setting | Value |
|---|---|
| Input | {{Steps.Fetch_Invoices.Output.Body.data.invoices}} |
| Logical operator | AND |
| # | Field path | Operator | Value | Case sensitive |
|---|---|---|---|---|
| 1 | status | Equals | overdue | Off |
| 2 | amount | Greater Than | 500 | — |
| 3 | contact.email | Is Not Empty | — | — |
- INV-002 is excluded: status is
paid(fails condition 1) - INV-003 is excluded: amount is 300, below the 500 threshold (fails condition 2)
- INV-004 is excluded:
contact.emailis empty (fails condition 3)
