Query synced records
CallPOST /actions/rpc/synced with the action and the account header, authenticating the same way as any RPC/HTTP call. No provider request is made.
filter and search to narrow the record set, sort and source to shape what comes back, aggs to return numbers instead of records, and page_size with skip to page. The API reference gives each one’s accepted shape.
If an account has more than one sync for the same action, pass sync_id to choose which one to read.
Records come back in the provider’s own shape, with the provider’s field names and nesting - not the normalized shape a regular action call returns. Filter and sort against those names.
Page through records
Setpage_size (up to 200) and skip to page. A page of large records can hold fewer records than page_size, so the response stays under its size limit. That page has "truncated": true. Get the next page from skip plus the number of records returned, not skip plus page_size.
If a single record is too large to fit in a page, the request fails with a 400 that names source. Pass a source with fewer fields to read it.
List the queryable fields
CallPOST /actions/rpc/synced/queryable_fields with the action and the same account header to get the fields you can filter, sort, and aggregate on, with their types. Listing fields isn’t billed. For example:
keyword or date, and the syncs the fields come from. fields is empty when the action has nothing synced for the account yet. Agents calling through MCP get the same list from the list_s1query_queryable_fields tool.
Fields nested five or more levels deep, and lists of lists, aren’t indexed, so they’re missing from this list. Records still return them, up to the 64 KB per-record limit. Naming one in filter, sort, or aggs returns a 400. A field five or more levels deep can still be named in source, and the response then includes the whole nested object it belongs to. See Deeply nested data for how depth is counted.
Aggregate instead of paging
An aggregation answers a question about the whole record set without returning the records:aggs returns aggregations instead of records, so source, sort, page_size, and skip are ignored, but filter still applies and lets you aggregate over a subset. The API reference lists the supported bucket and metric aggregations and how deeply they nest.
Response metadata
Every response carries adatasync block describing how fresh the data you just read is: when the readable records were written, when they expire if no further run happens, and the runs that produced them.
Querying an action that has nothing synced yet returns
200 with synced: false and a message, not an error. Treat it as a signal to fall back to a live action call.Next steps
Deep Query
What it does, when to reach for it, and how an agent uses it.
Data Sync
Turn on the sync this reads from, and set how often it refreshes.
RPC/HTTP
Call an action live against the provider instead.
API reference
The
/actions/rpc/synced endpoint.