List records with pagination, or count them
record_queryList records with pagination, or count them
Always keyset-paginated: when nextCursor comes back non-null there ARE more records — page with it instead of raising limit (capped at 100). Pass countOnly to get the total without fetching rows — it is a real, exact SQL count (never an estimate), so it is the right tool for a dashboard total instead of paging through everything and counting client-side. countOnly accepts viewId and/or filters to count a scoped subset (e.g. "PRs on the main branch"); both require baseId. To find records by a field value use record_find_by_field; to search content use search or grep.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | View sort (number/date fields only). | |
| limit | No | Page size, 1-100 (default 50). | |
| baseId | No | Restrict to one Base. Omit for the space. | |
| cursor | No | Opaque cursor from the previous page. | |
| viewId | No | countOnly only: count the rows this saved View displays. Requires baseId. | |
| filters | No | View filters pushed down to the server. With countOnly, requires baseId; not every filter is a cheap SQL count (see the records.count API description) but the result is always exact. | |
| playbook | No | Optional. The playbook you are following, as `kind:nodeId[:key]` from playbooks_search (e.g. `prompt:nod_123:log-visit`). Recorded on the change request so the person can see which playbook produced it. | |
| countOnly | No | Return the total instead of rows. | |
| targetSpaceId | No | Busabase space id. Call auth_verify first and ask the user which space to use when more than one is returned. |