Tables

Find rows

rows_query · Reads only · Markdown

Rows matching filters, all or any of them, sorted by up to 3 columns, a page at a time.

Free*

*Free up to 1,000,000 reads a month for the whole account, then $0.50 per 10,000 reads.

An example

Which jobs are due by the end of the month and not picked up yet?

Your agent callsrows_queryFree*

The example business is Halverson Cycle & Repair, a bike shop with a repair workshop in Portland, Oregon. The reply is the one the tool really gives.

With these arguments
{
  "table": "Workshop jobs",
  "filters": [
    {
      "column": "Status",
      "op": "neq",
      "value": "Picked up"
    },
    {
      "column": "Due",
      "op": "lte",
      "value": "2026-10-31"
    }
  ],
  "sort": [
    {
      "column": "Due",
      "direction": "asc"
    }
  ]
}
What comes back
{
  "rows": [
    {
      "row": 1,
      "Order": "W-2026-118",
      "Customer": "Rachel Kim",
      "Bike": "Willamette 8",
      "Work": "Full tune-up",
      "Due": "2026-10-22",
      "Status": "On the stand",
      "Price": 180
    }
  ],
  "total": 1
}

Use it when

Someone asks what is in a table: what is due, what is open, what matches.

What it does

Rows matching filters ([{"column": "Stage", "op": "eq", "value": "New"}]; ops: eq, neq, contains, not_contains, gt, gte, lt, lte for numbers and dates, empty, not_empty, in), all or any of them, sorted by columns, a page at a time.

What comes back

rows: each with its row number and values; total: how many matched; next_offset when there are more. Every reply also carries cost_usd and balance_usd.

Inputs

NameTypeWhat it is
tableRequiredstringThe table's name (or its table_id). 1 to 80 characters.
filtersarray of objectsUp to 20 items.
filters[].columnRequiredstringUp to 60 characters.
filters[].opstringOne of: eq,neq,contains,not_contains,gt,gte,lt,lte,empty,not_empty,in.
filters[].valueany
matchstringOne of: all,any. Default: all.
sortarray of objectsUp to 3 items.
sort[].columnRequiredstring
sort[].directionstringOne of: asc,desc.
limitinteger1 to 500. Default: 100.
offsetintegerAt least 0. Default: 0.

The call

Over MCP, call rows_query on https://api.conecto.chat/mcp/tables. Over REST:

Terminal
curl -X POST https://api.conecto.chat/v1/tools/rows_query \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"table":"Workshop jobs","filters":[{"column":"Status","op":"neq","value":"Picked up"},{"column":"Due","op":"lte","value":"2026-10-31"}],"sort":[{"column":"Due","direction":"asc"}]}'

When it refuses

A refused call costs nothing and says what to do next.

CodeWhenWhat to do
not_found404No table has that name or table_id, or the table has no column of that name.Call tables_list for the tables and their columns.
invalid_input400A filter's op is unknown, compares with the wrong kind of value, or uses gt, gte, lt or lte on a column that is not a number or a date.Use the ops this page lists, with values of the column's type.

Give this to your agent.

Set up Conecto from https://conecto.chat/SKILL.md