filter-and-query

How to filter, search, and sort records using the Frontline CLI. Use when you need to find specific records in a table or object by building query conditions, combining them with AND/OR logic, searchi

SKILL.md

GitHub

Filtering and Querying Records

The frontline table row list and frontline object record list commands accept --query, --search, and --sort flags for filtering data.

Quick Reference

# Simple text search across all fields
frontline object record list people --search "john"

# Filter by a single condition
# TIP: Use 'frontline object field list <name>' to find field names and tag IDs
frontline object record list deals --query '{
  "path": "[Amount]",
  "operator": "gte",
  "value": 10000
}'

# Multiple conditions (AND)
frontline object record list deals --query '{
  "operator": "and",
  "conditions": [
    { "path": "[Status]", "operator": "containsAny", "value": [1, 2] },
    { "path": "[Amount]", "operator": "gte", "value": 5000 }
  ]
}'

# Sort results
frontline object record list people --sort '[{"path": "[Last Name]", "type": "asc"}]'

Path Format

Field paths use bracket notation: [Field Name]

For relation fields (querying through a linked record's field): [Relation Field].[Target Field]

"path": "[Email]"              // Direct field
"path": "[Company].[Name]"     // Through a relation

Operators by Field Type

String Fields

Operator Description Value
equals Exact match "string"
ne Not equal "string"
contains Substring match "string"
startsWith Starts with "string"
endsWith Ends with "string"
isNull Field is empty (no value)
isNotNull Field has value (no value)

Number Fields

Operator Description Value
equals Equal to number
ne Not equal number
lt Less than number
lte Less than or equal number
gt Greater than number
gte Greater than or equal number
isNull / isNotNull Null checks (no value)

Date / DateOnly Fields

Operator Description Value
equals Exact date "2026-04-17T00:00:00Z"
before Before date "2026-04-17T00:00:00Z"
after After date "2026-04-17T00:00:00Z"
onOrBefore On or before "2026-04-17T00:00:00Z"
onOrAfter On or after "2026-04-17T00:00:00Z"
between Date range ["2026-01-01", "2026-12-31"]
isNull / isNotNull Null checks (no value)

Tags (Select/Multi-select) Fields

Important: Tag values must be numeric tag IDs, not names. Use frontline table field list <table> or frontline object field list <object> to find tag IDs in the options array of each field.

Operator Description Value
containsAny Has any of these tags [1, 2] (tag IDs)
containsAll Has all of these tags [3, 5] (tag IDs)
notIn Does not have any of [4] (tag IDs)
isNull / isNotNull Null checks (no value)

Relation Fields

Operator Description Value
containsAny Linked to any of ["id1", "id2"]
notIn Not linked to any of ["id1"]
isNull No linked records (no value)
isNotNull Has linked records (no value)

Boolean Fields

Operator Description
isTrue Value is true
isFalse Value is false
isNull / isNotNull Null checks

Formula Fields

Formula fields evaluate to one of the primitive types (number, string, boolean, date, tags) and support all of their respective operators. In addition, they support calculation status operators:

Operator Description Value
isValid Formula was evaluated successfully (no value)
isInvalid Formula evaluation failed with an error (no value)

Combining Conditions

Use and / or groups to combine conditions. Groups can be nested.

{
    "operator": "or",
    "conditions": [
        {
            "operator": "and",
            "conditions": [
                { "path": "[Status]", "operator": "containsAny", "value": [1] },
                { "path": "[Amount]", "operator": "gte", "value": 10000 },
            ],
        },
        {
            "path": "[Priority]",
            "operator": "containsAny",
            "value": [5],
        },
    ],
}

This matches: (Status is Open AND Amount >= 10000) OR Priority is Urgent.

Sorting

Pass a JSON array of sort specs:

# Single sort
frontline table row list my_table --sort '[{"path": "[Name]", "type": "asc"}]'

# Multi-sort (primary + secondary)
frontline table row list my_table --sort '[
  {"path": "[Status]", "type": "desc"},
  {"path": "[createdAt]", "type": "asc"}
]'

Pagination

frontline table row list my_table --page 1 --page-size 50
  • --page: Page number (default: 1)
  • --page-size: Items per page (default: 50, max: 200)

Filter by Record Type (objects only)

--record-type accepts either the numeric record type ID or the special string "all". Use frontline object record-type list <object> to find the numeric ID.

# By numeric ID (preferred — name-based lookup is not supported)
frontline object record list people --record-type 8
frontline object record list deals --record-type 3

# "all" returns records of every record type
frontline object record list deals --record-type "all"

Full Example

Find all open deals worth over $10k, owned by a specific company, sorted by amount:

frontline object record list deals \
  --query '{
    "operator": "and",
    "conditions": [
      { "path": "[Status]", "operator": "containsAny", "value": [1] },
      { "path": "[Amount]", "operator": "gte", "value": 10000 },
      { "path": "[Company]", "operator": "isNotNull" }
    ]
  }' \
  --sort '[{"path": "[Amount]", "type": "desc"}]' \
  --page-size 20

See also