Skip to main content
Glama

Query bounded rows from a staged statistical dataset

query_dataset
Read-onlyIdempotent

Return only bounded selected rows using literal equality filters.

There is no SQL, shell, filesystem, network-function, extension, or mutation surface. A safe default limit applies when limit is omitted.

Page with offset: rows come back in the dataset's stored order, and next_offset in the response is the absolute offset to pass as the next call's offset. Stored order is the provider's order, not necessarily chronological; filter TIME_PERIOD with where or sort client-side.

next_offset is null when there is no next page to ask for, which is not the same as having received everything. Check truncated too: null with truncated: false means the matches are exhausted; null with truncated: true means rows remain that this byte budget cannot reach, and min_bytes_required says what budget would.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoOptional max rows to return (a safe default applies when omitted)
whereNoOptional {column: value | [values]} literal-equality row filters
offsetNoOptional absolute zero-based row offset; pass back next_offset
selectNoOptional list of columns to return (defaults to all columns)
max_bytesNoOptional smaller byte budget for this response; it can only lower the server ceiling, never raise it
dataset_idYesId returned by stage_url
response_formatNoHow the rows are sent. "auto" (default) means no preference and lets the server decide; "text" sends them as CSV only — in the text content, and in structuredContent as a "csv" string in place of typed rows. "structured" sends typed rows only, "both" the CSV and the typed rows. If you got a summary but no rows, call again with response_format="text".auto

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
csvNo
rowsNo
columnsNo
truncatedYes
next_offsetYes
limit_sourceYes
matched_rowsYes
applied_limitYes
returned_rowsYes
max_bytes_ceilingNo
min_bytes_requiredNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / response_format / description
      Previous value: -"Which channel carries the rows. \"auto\" (default) means\nno preference and lets the server decide; \"text\" sends them as CSV\nin the text channel only, \"structured\" as typed rows only, \"both\"\nin both. If you got a summary but no rows, call again with\nresponse_format=\"text\"."New value: +"How the rows are sent. \"auto\" (default) means no\npreference and lets the server decide; \"text\" sends them as CSV\nonly — in the text content, and in structuredContent as a \"csv\"\nstring in place of typed rows. \"structured\" sends typed rows only,\n\"both\" the CSV and the typed rows. If you got a summary but no\nrows, call again with response_format=\"text\"."
    • addedOutput schema / properties / csv
      Added value: +{
      +  "type": "string"
      +}
  2. Changed7 schema fields changed
    • addedInput schema / properties / dataset_id / description
      Added value: +"Id returned by stage_url"
    • addedInput schema / properties / limit / description
      Added value: +"Optional max rows to return (a safe default applies when omitted)"
    • addedInput schema / properties / max_bytes / description
      Added value: +"Optional smaller byte budget for this response; it can only\nlower the server ceiling, never raise it"
    • addedInput schema / properties / offset / description
      Added value: +"Optional absolute zero-based row offset; pass back next_offset"
    • addedInput schema / properties / response_format / description
      Added value: +"Which channel carries the rows. \"auto\" (default) means\nno preference and lets the server decide; \"text\" sends them as CSV\nin the text channel only, \"structured\" as typed rows only, \"both\"\nin both. If you got a summary but no rows, call again with\nresponse_format=\"text\"."
    • addedInput schema / properties / select / description
      Added value: +"Optional list of columns to return (defaults to all columns)"
    • addedInput schema / properties / where / description
      Added value: +"Optional {column: value | [values]} literal-equality row filters"
  3. First observed

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, closed-world, but the description adds substantial behavior not captured there: the absence of any SQL/mutation surface, the default limit safety net, and a nuanced disclosure that next_offset=null is ambiguous on its own and must be read together with truncated, plus the min_bytes_required escape hatch for the byte budget. This is exactly the kind of beyond-annotations context that earns a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core contract in sentence one and the safety envelope in sentence two, then paging details. Every sentence carries information, though the backtick-heavy next_offset/truncated paragraph is dense and could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not restate return shapes, yet it usefully clarifies the response fields an agent must interpret to paginate correctly (next_offset, truncated, min_bytes_required) and explains the response_format 'got a summary but no rows' recovery path. Nothing needed to call and iterate this tool successfully is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description goes beyond it by explaining paging mechanics for offset (rows return in stored order, pass back next_offset) and by tying truncated/min_bytes_required to the max_bytes budget. It adds genuine operational meaning for offset and max_bytes that the schema text alone does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource — return bounded selected rows via literal equality filters — and the second sentence sharply delineates the operation's surface (no SQL, shell, filesystem, network, extension, or mutation). That is unusually clear purpose framing, though it does not name or contrast with any of the sibling tools (e.g., inspect_dataset), so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete operational guidance: a safe default limit when omitted, how to page via offset/next_offset, and how to handle stored ordering (filter TIME_PERIOD or sort client-side). It does not, however, say when to reach for query_dataset rather than inspect/inspect_dataset or how to obtain a dataset_id beyond the schema's 'Id returned by stage_url'. Clear context, no explicit alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources