Skip to main content
POST
Python SDK

Access

An MCP token or a Parable token can call this operation. See Authentication for the kinds of token. Your roles must grant tenant.data.query.providers.

Errors

  • HTTP 400: The scope is not a dotted name that starts with providers or workspace, or the scope and kind can never match together. A listing was sent a column kind, an offset, a scope other than one Provider by name, or another listing’s cursor; a search was sent a cursor. The message says what to change. A scope in a Pool the caller may not query is not an error: the search finds nothing. Start the scope with providers, such as providers.jiracloud or providers.*.issues, or leave scope and kind out. A workspace scope finds nothing through this operation. Page a listing with nextCursor, and a search with offset.
  • HTTP 403: The caller may not query data in this Workspace. Ask a Workspace Administrator for the Provider Pools Reader role. A different query does not help.
  • HTTP 429: Too many queries were running, so the statement did not start (QL-IN-008), or the caller sent more than 120 of these requests in a minute. Nothing ran. Wait a moment, or for the seconds in the Retry-After header when it is set, then send the same request again.
  • HTTP 503: The statement stopped for lack of memory (QL-IN-009), or a service it needs did not answer, such as the model service behind semantic ranking or a SQL AI function (QL-IN-010). The code says which. Try again shortly. For QL-IN-009, read fewer columns or rows, or aggregate.
  • HTTP 504: The statement ran past its time budget (a QL-TO code) or did not finish in 30 seconds. Narrow the scope or the statement, then send it again.

Authorizations

Authorization
string
header
required

A personal access token, which starts with pat_. A Parable token can call each operation that the roles of its owner allow. An MCP token can call only the read operations that are open to agents. A SQL token does not work on this API.

Headers

X-Tenant
string

Workspace slug. Overrides subdomain-based workspace resolution when provided.

Example:

"acme"

X-Request-ID
string<uuid>

Optional request correlation ID echoed back in the response.

Example:

"550e8400-e29b-41d4-a716-446655440000"

Body

application/json

A search of the data the caller may query, by the words a table's or a column's name and description would use, or, with an empty query, a listing of the tables they may query.

query
string
required

Plain text describing the data, such as open issues and who they are assigned to. Empty or * lists the Provider Pool instead of searching it: each Provider with its table count, or with a scope such as providers.jiracloud, that Provider's tables.

Maximum string length: 1000
cursor
string | null

The nextCursor of the listing page before, to read the next one. Null starts a listing at its first table. A search takes none.

Maximum string length: 1500
kind

Null returns tables and columns. A listing returns tables only.

Available options:
table,
column
limit
integer<int64> | null

Results per page, 1 to 100. Null means 20 in a search and 100 in a listing.

Required range: 1 <= x <= 100
offset
integer<int64> | null

Results to skip in a search, which ranks at most 500. Null means 0. A listing pages with cursor instead.

Required range: 0 <= x <= 499
scope
string | null

A pattern over names that narrows the search before ranking, one dotted segment at a time: providers.jiracloud is one Provider, providers.jiracloud.issues.* the columns of one table, providers.*.issues the tables named issues in every Provider. Null searches every Pool the caller may query. A listing takes no scope, to list the Providers, or one Provider by name, to list its tables.

Maximum string length: 500

Response

Successful response

data
object
required
meta
object
required