Every filter operator Customermates supports, with examples.
TL;DR — Filters are arrays of { field, operator, value? } rules, AND-combined. Thirteen operators cover equality, comparison, set membership, range, null checks, and relationship membership.
filter_entity and count_entity MCP tools.entityFilters and dealFilters on widgets.[
{ "field": "firstName", "operator": "contains", "value": "acme" },
{ "field": "createdAt", "operator": "gte", "value": "2024-01-01" }
]Rules are AND-combined. For OR logic, run two queries and merge client-side, or use the in operator when comparing against a list.
| Operator | Expects | Works on | Example value |
|---|---|---|---|
equals | single | scalars, ids | "active" |
contains | single | strings | "acme" |
gt | single | numbers, dates | "2024-01-01" |
gte | single | numbers, dates | 100 |
lt | single | numbers, dates | "2024-12-31" |
lte | single | numbers, dates | "2024-12-31" |
in | array | any | ["id1", "id2"] |
notIn | array | any | ["id1"] |
between | array of 2 | numbers, dates | ["2024-01-01", "2024-12-31"] |
isNull | no value | any | — |
isNotNull | no value | any | — |
hasNone | no value | relationship arrays | — |
hasSome | no value | relationship arrays | — |
The field value is whatever get_entity_configuration returns under filterableFields for that entity. It includes:
createdAt, updatedAt).organizationIds, dealIds, userIds, contactIds) — pair these with in, notIn, hasNone, hasSome.Always call get_entity_configuration first if you're not sure what's filterable. The error when a field isn't recognized lists every available field with its allowed operators.
Contacts in any of three organizations:
{ "field": "organizationIds", "operator": "in", "value": ["org_1","org_2","org_3"] }Deals created in 2024 with a custom "stage" column equal to "won":
[
{ "field": "createdAt", "operator": "between", "value": ["2024-01-01","2024-12-31"] },
{ "field": "col_stage", "operator": "equals", "value": "won" }
]Contacts without any organization linked:
{ "field": "organizationIds", "operator": "hasNone" }Services whose custom "renewalDate" column is in the next 30 days:
{ "field": "col_renewal", "operator": "between", "value": ["2026-04-22","2026-05-22"] }filter_entity also accepts searchTerm, which runs a free-text search against the entity's name fields (firstName + lastName for contacts, name for the rest). If you want "contacts whose name contains acme", that's searchTerm, not a filter rule on firstName. Filter rules on firstName specifically are not supported.